mirror of
https://github.com/postgresml/pgcat.git
synced 2026-03-23 01:16:30 +00:00
* add workflow * feat: add pgcat helm chart * fix: set the right include into configmap Signed-off-by: David ALEXANDRE <david.alexandre@w6d.io> * update values and config * prettifying config --------- Signed-off-by: David ALEXANDRE <david.alexandre@w6d.io>
362 lines
14 KiB
YAML
362 lines
14 KiB
YAML
## String to partially override aspnet-core.fullname template (will maintain the release name)
|
|
## @param nameOverride String to partially override common.names.fullname
|
|
##
|
|
nameOverride: ""
|
|
|
|
## String to fully override aspnet-core.fullname template
|
|
## @param fullnameOverride String to fully override common.names.fullname
|
|
##
|
|
fullnameOverride: ""
|
|
|
|
## Number of PgCat replicas to deploy
|
|
## @param replicaCount Number of PgCat replicas to deploy
|
|
replicaCount: 1
|
|
|
|
## Bitnami PgCat image version
|
|
## ref: https://hub.docker.com/r/bitnami/kubewatch/tags/
|
|
##
|
|
## @param image.registry PgCat image registry
|
|
## @param image.repository PgCat image name
|
|
## @param image.tag PgCat image tag
|
|
## @param image.pullPolicy PgCat image tag
|
|
## @param image.pullSecrets Specify docker-registry secret names as an array
|
|
image:
|
|
repository: ghcr.io/postgresml/pgcat
|
|
# Overrides the image tag whose default is the chart appVersion.
|
|
tag: "main"
|
|
## Specify a imagePullPolicy
|
|
## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'
|
|
## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images
|
|
##
|
|
pullPolicy: IfNotPresent
|
|
## Optionally specify an array of imagePullSecrets.
|
|
## Secrets must be manually created in the namespace.
|
|
## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
|
|
## Example:
|
|
## pullSecrets:
|
|
## - myRegistryKeySecretName
|
|
##
|
|
pullSecrets: []
|
|
|
|
## Specifies whether a ServiceAccount should be created
|
|
##
|
|
## @param serviceAccount.create Enable the creation of a ServiceAccount for PgCat pods
|
|
## @param serviceAccount.name Name of the created ServiceAccount
|
|
##
|
|
serviceAccount:
|
|
## Specifies whether a service account should be created
|
|
create: true
|
|
## Annotations to add to the service account
|
|
annotations: {}
|
|
## The name of the service account to use.
|
|
## If not set and create is true, a name is generated using the fullname template
|
|
name: ""
|
|
|
|
## Annotations for server pods.
|
|
## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/
|
|
##
|
|
## @param podAnnotations Annotations for PgCat pods
|
|
##
|
|
podAnnotations: {}
|
|
|
|
## PgCat containers' SecurityContext
|
|
## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod
|
|
##
|
|
## @param podSecurityContext.enabled Enabled PgCat pods' Security Context
|
|
## @param podSecurityContext.fsGroup Set PgCat pod's Security Context fsGroup
|
|
##
|
|
podSecurityContext: {}
|
|
# fsGroup: 2000
|
|
|
|
## PgCat pods' Security Context
|
|
## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container
|
|
##
|
|
## @param containerSecurityContext.enabled Enabled PgCat containers' Security Context
|
|
## @param containerSecurityContext.runAsUser Set PgCat container's Security Context runAsUser
|
|
## @param containerSecurityContext.runAsNonRoot Set PgCat container's Security Context runAsNonRoot
|
|
##
|
|
containerSecurityContext: {}
|
|
# capabilities:
|
|
# drop:
|
|
# - ALL
|
|
# readOnlyRootFilesystem: true
|
|
# runAsNonRoot: true
|
|
# runAsUser: 1000
|
|
|
|
## PgCat service
|
|
##
|
|
## @param service.type PgCat service type
|
|
## @param service.port PgCat service port
|
|
service:
|
|
type: ClusterIP
|
|
port: 6432
|
|
|
|
ingress:
|
|
enabled: false
|
|
className: ""
|
|
annotations: {}
|
|
# kubernetes.io/ingress.class: nginx
|
|
# kubernetes.io/tls-acme: "true"
|
|
hosts:
|
|
- host: chart-example.local
|
|
paths:
|
|
- path: /
|
|
pathType: ImplementationSpecific
|
|
tls: []
|
|
# - secretName: chart-example-tls
|
|
# hosts:
|
|
# - chart-example.local
|
|
|
|
## PgCat resource requests and limits
|
|
## ref: http://kubernetes.io/docs/user-guide/compute-resources/
|
|
##
|
|
## @skip resources Optional description
|
|
## @disabled-param resources.limits The resources limits for the PgCat container
|
|
## @disabled-param resources.requests The requested resources for the PgCat container
|
|
##
|
|
resources:
|
|
# We usually recommend not to specify default resources and to leave this as a conscious
|
|
# choice for the user. This also increases chances charts run on environments with little
|
|
# resources, such as Minikube. If you do want to specify resources, uncomment the following
|
|
# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
|
|
limits: {}
|
|
# cpu: 100m
|
|
# memory: 128Mi
|
|
requests: {}
|
|
# cpu: 100m
|
|
# memory: 128Mi
|
|
|
|
## Node labels for pod assignment. Evaluated as a template.
|
|
## ref: https://kubernetes.io/docs/user-guide/node-selection/
|
|
##
|
|
## @param nodeSelector Node labels for pod assignment
|
|
##
|
|
nodeSelector: {}
|
|
|
|
## Tolerations for pod assignment. Evaluated as a template.
|
|
## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
|
|
##
|
|
## @param tolerations Tolerations for pod assignment
|
|
##
|
|
tolerations: []
|
|
|
|
## Affinity for pod assignment. Evaluated as a template.
|
|
## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity
|
|
## Note: podAffinityPreset, podAntiAffinityPreset, and nodeAffinityPreset will be ignored when it's set
|
|
##
|
|
## @param affinity Affinity for pod assignment
|
|
##
|
|
affinity: {}
|
|
|
|
## PgCat configuration
|
|
## @param configuration [object]
|
|
configuration:
|
|
## General pooler settings
|
|
## @param [object]
|
|
general:
|
|
## @param configuration.general.host What IP to run on, 0.0.0.0 means accessible from everywhere.
|
|
host: "0.0.0.0"
|
|
|
|
## @param configuration.general.port Port to run on, same as PgBouncer used in this example.
|
|
port: 6432
|
|
|
|
## @param configuration.general.enable_prometheus_exporter Whether to enable prometheus exporter or not.
|
|
enable_prometheus_exporter: false
|
|
|
|
## @param configuration.general.prometheus_exporter_port Port at which prometheus exporter listens on.
|
|
prometheus_exporter_port: 9930
|
|
|
|
# @param configuration.general.connect_timeout How long to wait before aborting a server connection (ms).
|
|
connect_timeout: 5000
|
|
|
|
# How long an idle connection with a server is left open (ms).
|
|
idle_timeout: 30000 # milliseconds
|
|
|
|
# Max connection lifetime before it's closed, even if actively used.
|
|
server_lifetime: 86400000 # 24 hours
|
|
|
|
# How long a client is allowed to be idle while in a transaction (ms).
|
|
idle_client_in_transaction_timeout: 0 # milliseconds
|
|
|
|
# @param configuration.general.healthcheck_timeout How much time to give `SELECT 1` health check query to return with a result (ms).
|
|
healthcheck_timeout: 1000
|
|
|
|
# @param configuration.general.healthcheck_delay How long to keep connection available for immediate re-use, without running a healthcheck query on it
|
|
healthcheck_delay: 30000
|
|
|
|
# @param configuration.general.shutdown_timeout How much time to give clients during shutdown before forcibly killing client connections (ms).
|
|
shutdown_timeout: 60000
|
|
|
|
# @param configuration.general.ban_time For how long to ban a server if it fails a health check (seconds).
|
|
ban_time: 60 # seconds
|
|
|
|
# @param configuration.general.log_client_connections If we should log client connections
|
|
log_client_connections: false
|
|
|
|
# @param configuration.general.log_client_disconnections If we should log client disconnections
|
|
log_client_disconnections: false
|
|
|
|
# TLS
|
|
# tls_certificate: "server.cert"
|
|
# tls_private_key: "server.key"
|
|
tls_certificate: "-"
|
|
tls_private_key: "-"
|
|
|
|
# Credentials to access the virtual administrative database (pgbouncer or pgcat)
|
|
# Connecting to that database allows running commands like `SHOW POOLS`, `SHOW DATABASES`, etc..
|
|
admin_username: "postgres"
|
|
admin_password: "postgres"
|
|
|
|
# Query to be sent to servers to obtain the hash used for md5 authentication. The connection will be
|
|
# established using the database configured in the pool. This parameter is inherited by every pool and
|
|
# can be redefined in pool configuration.
|
|
auth_query: null
|
|
|
|
# User to be used for connecting to servers to obtain the hash used for md5 authentication by sending
|
|
# the query specified in auth_query_user. The connection will be established using the database configured
|
|
# in the pool. This parameter is inherited by every pool and can be redefined in pool configuration.
|
|
#
|
|
# @param configuration.general.auth_query_user
|
|
auth_query_user: null
|
|
|
|
# Password to be used for connecting to servers to obtain the hash used for md5 authentication by sending
|
|
# the query specified in auth_query_user. The connection will be established using the database configured
|
|
# in the pool. This parameter is inherited by every pool and can be redefined in pool configuration.
|
|
#
|
|
# @param configuration.general.auth_query_password
|
|
auth_query_password: null
|
|
|
|
# Number of seconds of connection idleness to wait before sending a keepalive packet to the server.
|
|
tcp_keepalives_idle: 5
|
|
|
|
# Number of unacknowledged keepalive packets allowed before giving up and closing the connection.
|
|
tcp_keepalives_count: 5
|
|
|
|
# Number of seconds between keepalive packets.
|
|
tcp_keepalives_interval: 5
|
|
|
|
## pool
|
|
## configs are structured as pool.<pool_name>
|
|
## the pool_name is what clients use as database name when connecting
|
|
## For the example below a client can connect using "postgres://sharding_user:sharding_user@pgcat_host:pgcat_port/sharded"
|
|
## @param [object]
|
|
pools: []
|
|
# - ## default values
|
|
# ##
|
|
# ##
|
|
# ##
|
|
# name: "db"
|
|
|
|
# ## Pool mode (see PgBouncer docs for more).
|
|
# ## session: one server connection per connected client
|
|
# ## transaction: one server connection per client transaction
|
|
# ## @param configuration.poolsPostgres.pool_mode
|
|
# pool_mode: "transaction"
|
|
|
|
# ## Load balancing mode
|
|
# ## `random` selects the server at random
|
|
# ## `loc` selects the server with the least outstanding busy connections
|
|
# ##
|
|
# ## @param configuration.poolsPostgres.load_balancing_mode
|
|
# load_balancing_mode: "random"
|
|
|
|
# ## Prepared statements cache size.
|
|
# ## TODO: update documentation
|
|
# ##
|
|
# ## @param configuration.poolsPostgres.prepared_statements_cache_size
|
|
# prepared_statements_cache_size: 500
|
|
|
|
# ## If the client doesn't specify, route traffic to
|
|
# ## this role by default.
|
|
# ##
|
|
# ## any: round-robin between primary and replicas,
|
|
# ## replica: round-robin between replicas only without touching the primary,
|
|
# ## primary: all queries go to the primary unless otherwise specified.
|
|
# ## @param configuration.poolsPostgres.default_role
|
|
# default_role: "any"
|
|
|
|
# ## Query parser. If enabled, we'll attempt to parse
|
|
# ## every incoming query to determine if it's a read or a write.
|
|
# ## If it's a read query, we'll direct it to a replica. Otherwise, if it's a write,
|
|
# ## we'll direct it to the primary.
|
|
# ## @param configuration.poolsPostgres.query_parser_enabled
|
|
# query_parser_enabled: true
|
|
|
|
# ## If the query parser is enabled and this setting is enabled, we'll attempt to
|
|
# ## infer the role from the query itself.
|
|
# ## @param configuration.poolsPostgres.query_parser_read_write_splitting
|
|
# query_parser_read_write_splitting: true
|
|
|
|
# ## If the query parser is enabled and this setting is enabled, the primary will be part of the pool of databases used for
|
|
# ## load balancing of read queries. Otherwise, the primary will only be used for write
|
|
# ## queries. The primary can always be explicitly selected with our custom protocol.
|
|
# ## @param configuration.poolsPostgres.primary_reads_enabled
|
|
# primary_reads_enabled: true
|
|
|
|
# ## So what if you wanted to implement a different hashing function,
|
|
# ## or you've already built one and you want this pooler to use it?
|
|
# ##
|
|
# ## Current options:
|
|
# ##
|
|
# ## pg_bigint_hash: PARTITION BY HASH (Postgres hashing function)
|
|
# ## sha1: A hashing function based on SHA1
|
|
# ##
|
|
# ## @param configuration.poolsPostgres.sharding_function
|
|
# sharding_function: "pg_bigint_hash"
|
|
|
|
# ## Credentials for users that may connect to this cluster
|
|
# ## @param users [array]
|
|
# ## @param users[0].username Name of the env var (required)
|
|
# ## @param users[0].password Value for the env var (required)
|
|
# ## @param users[0].pool_size Maximum number of server connections that can be established for this user
|
|
# ## @param users[0].statement_timeout Maximum query duration. Dangerous, but protects against DBs that died in a non-obvious way.
|
|
# users: []
|
|
# # - username: "user"
|
|
# # password: "pass"
|
|
# #
|
|
# # # The maximum number of connection from a single Pgcat process to any database in the cluster
|
|
# # # is the sum of pool_size across all users.
|
|
# # pool_size: 9
|
|
# #
|
|
# # # Maximum query duration. Dangerous, but protects against DBs that died in a non-obvious way.
|
|
# # statement_timeout: 0
|
|
# #
|
|
# # # PostgreSQL username used to connect to the server.
|
|
# # server_username: "postgres
|
|
# #
|
|
# # # PostgreSQL password used to connect to the server.
|
|
# # server_password: "postgres
|
|
|
|
# ## @param shards [array]
|
|
# ## @param shards[0].server[0].host Host for this shard
|
|
# ## @param shards[0].server[0].port Port for this shard
|
|
# ## @param shards[0].server[0].role Role for this shard
|
|
# shards: []
|
|
# # [ host, port, role ]
|
|
# # - servers:
|
|
# # - host: "postgres"
|
|
# # port: 5432
|
|
# # role: "primary"
|
|
# # - host: "postgres"
|
|
# # port: 5432
|
|
# # role: "replica"
|
|
# # database: "postgres"
|
|
# # # [ host, port, role ]
|
|
# # - servers:
|
|
# # - host: "postgres"
|
|
# # port: 5432
|
|
# # role: "primary"
|
|
# # - host: "postgres"
|
|
# # port: 5432
|
|
# # role: "replica"
|
|
# # database: "postgres"
|
|
# # # [ host, port, role ]
|
|
# # - servers:
|
|
# # - host: "postgres"
|
|
# # port: 5432
|
|
# # role: "primary"
|
|
# # - host: "postgres"
|
|
# # port: 5432
|
|
# # role: "replica"
|
|
# # database: "postgres"
|