A Helm chart for Kubernetes
helm repo add christianhuth https://charts.christianhuth.de
helm repo update
helm install my-release christianhuth/proxyweb
This chart bootstraps a ProxyWeb deployment on a Kubernetes cluster using the Helm package manager.
- Kubernetes 1.19+
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
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.
| 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