Skip to content

Latest commit

 

History

History

proxyweb

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 

proxyweb

A Helm chart for Kubernetes

TL;DR;

helm repo add christianhuth https://charts.christianhuth.de
helm repo update
helm install my-release christianhuth/proxyweb

Introduction

This chart bootstraps a ProxyWeb deployment on a Kubernetes cluster using the Helm package manager.

Prerequisites

  • Kubernetes 1.19+

Installing the Chart

To install the chart with the release name my-release:

helm repo add christianhuth https://charts.christianhuth.de
helm repo update
helm install my-release christianhuth/proxyweb

These commands deploy ProxyWeb on the Kubernetes cluster in the default configuration. The Values section lists the values that can be configured during installation.

Tip: List all releases using helm list

Uninstalling the Chart

To uninstall the my-release deployment:

helm uninstall my-release

The command removes all the Kubernetes components associated with the chart and deletes the release.

Values

| Key | Type | Default | Description | | ---------------------------------------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------- | ----------- | --- | ------- | --- | ------------- | --- | -------------- | --- | --------- | --- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --- | | affinity | object | {} | Affinity settings for pod assignment | | autoscaling.enabled | bool | false | | | autoscaling.maxReplicas | int | 100 | | | autoscaling.minReplicas | int | 1 | | | autoscaling.targetCPUUtilizationPercentage | int | 80 | | | configuration.config.flask.SECRET_KEY | string | "kaNGSGSLrEzaplUL" | | | configuration.config.flask.SEND_FILE_MAX_AGE_DEFAULT | int | 0 | | | configuration.config.flask.TEMPLATES_AUTO_RELOAD | string | "True" | | | configuration.config.global.default_server | string | "proxysql" | | | configuration.config.global.hide_tables[0] | string | "" | | | configuration.config.global.read_only | bool | false | | | configuration.config.misc.adhoc_report[0].info | string | "Examining queries with big sum_time(number of execution * time to run) is a good place to start when optimizing queries." | | | configuration.config.misc.adhoc_report[0].sql | string | "SELECT digest,username,schemaname, SUBSTR(digest_text,0,80),count_star,sum_time/1000/1000 as sum_time_sec FROM stats_mysql_query_digest WHERE digest_text LIKE 'SELECT%' ORDER BY sum_time DESC LIMIT 10;" | | | configuration.config.misc.adhoc_report[0].title | string | "Top 10 SELECTs by sum_time" | | | configuration.config.misc.adhoc_report[1].info | string | "Caching/rewriting/even removing frequently running queries can improve the overall performance significantly. ProxySQL support all the mentioned methods. Example: it's a good idea to cache queries often issued by connectors like ^SELECT @@max_allowed_packet" | | | configuration.config.misc.adhoc_report[1].sql | string | "SELECT digest,username,schemaname, SUBSTR(digest_text,0,80),count_star,sum_time FROM stats_mysql_query_digest WHERE digest_text LIKE 'SELECT%' ORDER BY count_star DESC LIMIT 10;" | | | configuration.config.misc.adhoc_report[1].title | string | "Top 10 SELECTs by count_star" | | | configuration.config.misc.adhoc_report[2].info | string | "Caching/rewriting/even removing frequently running queries can improve the overall performance significantly. ProxySQL support all the mentioned methods. Example: it's a good idea to cache queries often issued by connectors like ^SELECT @@max_allowed_packet" | | | configuration.config.misc.adhoc_report[2].sql | string | "SELECT digest,username,schemaname, SUBSTR(digest_text,0,80),count_star,sum_time, (sum_time/count_star)/1000 as avg_time_ms FROM stats_mysql_query_digest WHERE digest_text LIKE 'SELECT%' ORDER BY avg_time_ms DESC LIMIT 10;" | | | configuration.config.misc.adhoc_report[2].title | string | "Top 10 SELECTs by avg_time" | | | configuration.config.misc.adhoc_report[3].info | string | "This helps identify the most frequently running writes" | | | configuration.config.misc.adhoc_report[3].sql | string | "SELECT digest,username,schemaname, SUBSTR(digest_text,0,80),count_star,sum_time FROM stats_mysql_query_digest where digest_text LIKE 'INSERT%' or digest_text like 'DELETE%' or digest_text like 'UPDATE%' order by count_star DESC LIMIT 10;" | | | configuration.config.misc.adhoc_report[3].title | string | "Top 10 writes" | | | configuration.config.misc.adhoc_report[4].info | string | "This helps identify the schemas getting the most writes" | | | configuration.config.misc.adhoc_report[4].sql | string | "SELECT schemaname, sum(sum_time) as time_spent, sum(count_star) as sum_count_star FROM stats_mysql_query_digest where digest_text LIKE 'INSERT%' or digest_text like 'DELETE%' or digest_text like 'UPDATE%' group by schemaname order by time_spent desc;" | | | configuration.config.misc.adhoc_report[4].title | string | "Schemas with the most DMLs" | | | configuration.config.misc.adhoc_report[5].info | string | "List of the schemas with the highest overall sum_time" | | | configuration.config.misc.adhoc_report[5].sql | string | "SELECT schemaname, sum(sum_time) as time_spent FROM stats_mysql_query_digest group by schemaname order by time_spent desc limit 5;" | | | configuration.config.misc.adhoc_report[5].title | string | "Top 5 schemas by sum_time" | | | configuration.config.misc.adhoc_report[6].info | string | "Don't send selects to the readers without checking the impact first as the app might read back the data immediately after writing it." | | | configuration.config.misc.adhoc_report[6].sql | string | "select \"replace into mysql_query_rules (username,schemaname,destination_hostgroup,active,apply,digest) values('\" | | st.username | | \"','\" | | st.schemaname | | \"',12,1,1,'\" | | st.digest | | \"');\" from stats_mysql_query_digest st left join runtime_mysql_query_rules qr on st.digest = qr.digest where qr.rule_id is null and digest_text LIKE 'SELECT%' ORDER BY count_star desc limit 5;" | | | configuration.config.misc.adhoc_report[6].title | string | "Send the top 5 SELECTS to the readers" | | | configuration.config.servers.proxysql.dsn[0].db | string | "main" | | | configuration.config.servers.proxysql.dsn[0].host | string | "127.0.0.1" | | | configuration.config.servers.proxysql.dsn[0].passwd | string | "sadmin" | | | configuration.config.servers.proxysql.dsn[0].port | string | "6032" | | | configuration.config.servers.proxysql.dsn[0].user | string | "sadmin" | | | configuration.existingSecret | string | "" | | | fullnameOverride | string | "" | String to fully override "proxyweb.fullname" | | image.pullPolicy | string | "Always" | image pull policy | | image.repository | string | "proxyweb/proxyweb" | image repository | | image.tag | string | "latest" | Overrides the image tag | | imagePullSecrets | list | [] | If defined, uses a Secret to pull an image from a private Docker registry or repository. | | ingress.annotations | object | {} | | | ingress.className | string | "" | | | ingress.enabled | bool | false | | | ingress.hosts[0].host | string | "chart-example.local" | | | ingress.hosts[0].paths[0].path | string | "/" | | | ingress.hosts[0].paths[0].pathType | string | "ImplementationSpecific" | | | ingress.tls | list | [] | | | nameOverride | string | "" | Provide a name in place of proxyweb | | nodeSelector | object | {} | Node labels for pod assignment | | podAnnotations | object | {} | Annotations to be added to pods | | podSecurityContext | object | {} | pod-level security context | | psp.enabled | bool | false | | | replicaCount | int | 1 | Number of replicas | | resources | object | {} | Resource limits and requests for the headwind pods. | | revisionHistoryLimit | int | 10 | The number of old ReplicaSets to retain | | securityContext | object | {} | container-level security context | | service.port | int | 80 | Kubernetes port where service is exposed | | service.type | string | "ClusterIP" | Kubernetes service type | | serviceAccount.annotations | object | {} | Annotations to add to the service account | | serviceAccount.create | bool | true | Specifies whether a service account should be created | | serviceAccount.name | string | "" | The name of the service account to use. If not set and create is true, a name is generated using the fullname template | | tolerations | list | [] | Toleration labels for pod assignment |

Specify each parameter using the --set key=value[,key=value] argument to helm install.

Alternatively, a YAML file that specifies the values for the parameters can be provided while installing the chart. For example,

helm install my-release -f values.yaml christianhuth/proxyweb