pgcat: &pgcat_config image: tag: latest #default tag main doesn't support arm64 service: port: 6432 nodeSelector: {} 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: SELECT usename, passwd FROM user_search($1) # 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: pgcat_auth # 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: pgcat_auth # 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. ## 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: - name: passthrough users: - username: "" # required et pas vide password: "" # requis par le chart. Préférer md5 plutot qu'en clair pool_size: 9 statement_timeout: 0 shards: - servers: - host: "198.168.1.202" port: 5432 role: "primary" database: "" # required et pas vide # - ## 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" tool: # kind: 'SubChart' or 'HelmChart', if subchart then uncomment Chart.yaml dependency, else comment and use tool library with helm chart template kind: 'SubChart' repo: https://improwised.github.io/charts/ chart: pgcat version: 0.1.0 values: *pgcat_config