Connection pooling
Pooling is implemented but config is not exposed to k3s.
The default is maxIdleConns=2, maxOpenConns=0, connMaxLifetime=0s.
PostgreSQL
Connection string
postgres://username:password@hostname:port/database-name?sslmode=verify-full
With --datastore-cafile, sslmode is automatically set to verify-full. The certificate files will not be copied, so it’s best to specify an absolute location.
MySQL
TLS verify
If cert, key and CA files are not specified, append ?tls=true to the datastore endpoint to enforce TLS.
Otherwise, Kine sets a custom TLS config that always verify server certificates.
// func (c Config) ClientConfig() (*tls.Config, error)
if c.CertFile == "" && c.KeyFile == "" && c.CAFile == "" {
return nil, nil
}// func prepareDSN(dataSourceName string, tlsConfig *cryptotls.Config)
config, err := mysql.ParseDSN(dataSourceName)
if tlsConfig != nil {
[...snip...]
config.TLSConfig = "kine"
}
parsedDSN := config.FormatDSN()// func FormatDSN()
if len(cfg.TLSConfig) > 0 {
writeDSNParam(&buf, &hasParam, "tls", url.QueryEscape(cfg.TLSConfig))
}Managed database
On managed MySQL databases, CREATE DATABASE might not be supported. For example, Vitess without database creator plugins will invoke the failDBDDL plugin, which always fails.