This commit is contained in:
mbuken 2026-01-12 06:46:35 +00:00 committed by GitHub
commit 6a637a3279
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 47 additions and 6 deletions

View File

@ -138,6 +138,16 @@ spec:
connectionPooler:
type: object
properties:
imagePullSecrets:
type: array
nullable: true
items:
type: object
required:
- name
properties:
name:
type: string
dockerImage:
type: string
maxDBConnections:

View File

@ -588,6 +588,9 @@ for both master and replica pooler services (if `enableReplicaConnectionPooler`
User to create for connection pooler to be able to connect to a database.
You can also choose a role from the `users` section or a system user role.
* **imagePullSecrets**
References an existing Kubernetes secret to use when pulling a custom pooler image.
* **dockerImage**
Which docker image to use for connection pooler deployment.

View File

@ -136,6 +136,16 @@ spec:
connectionPooler:
type: object
properties:
imagePullSecrets:
type: array
nullable: true
items:
type: object
required:
- name
properties:
name:
type: string
dockerImage:
type: string
maxDBConnections:

View File

@ -220,6 +220,19 @@ var PostgresCRDResourceValidation = apiextv1.CustomResourceValidation{
"connectionPooler": {
Type: "object",
Properties: map[string]apiextv1.JSONSchemaProps{
"imagePullSecrets": {
Type: "array",
Nullable: true,
Items: &apiextv1.JSONSchemaPropsOrArray{
Schema: &apiextv1.JSONSchemaProps{
Type: "object",
Required: []string{"name"},
Properties: map[string]apiextv1.JSONSchemaProps{
"name": {Type: "string"},
},
},
},
},
"dockerImage": {
Type: "string",
},

View File

@ -242,12 +242,13 @@ type PostgresStatus struct {
// makes sense to expose. E.g. pool size (min/max boundaries), max client
// connections etc.
type ConnectionPooler struct {
NumberOfInstances *int32 `json:"numberOfInstances,omitempty"`
Schema string `json:"schema,omitempty"`
User string `json:"user,omitempty"`
Mode string `json:"mode,omitempty"`
DockerImage string `json:"dockerImage,omitempty"`
MaxDBConnections *int32 `json:"maxDBConnections,omitempty"`
NumberOfInstances *int32 `json:"numberOfInstances,omitempty"`
Schema string `json:"schema,omitempty"`
User string `json:"user,omitempty"`
Mode string `json:"mode,omitempty"`
DockerImage string `json:"dockerImage,omitempty"`
MaxDBConnections *int32 `json:"maxDBConnections,omitempty"`
ImagePullSecrets []v1.LocalObjectReference `json:"imagePullSecrets,omitempty"`
*Resources `json:"resources,omitempty"`
}

View File

@ -412,6 +412,10 @@ func (c *Cluster) generateConnectionPoolerPodTemplate(role PostgresRole) (
},
}
if len(connectionPoolerSpec.ImagePullSecrets) > 0 {
podTemplate.Spec.ImagePullSecrets = connectionPoolerSpec.ImagePullSecrets
}
nodeAffinity := c.nodeAffinity(c.OpConfig.NodeReadinessLabel, spec.NodeAffinity)
if c.OpConfig.EnablePodAntiAffinity {
labelsSet := labels.Set(c.connectionPoolerLabels(role, false).MatchLabels)