-
Notifications
You must be signed in to change notification settings - Fork 1k
Closed
Closed
Copy link
Description
Hi, I'm trying to use postgres-operator inside my own. Simple configuration with minimal cluster spec looks like:
apiVersion: project.project.com/v1
kind: CustomCRD
metadata:
name: project-sample
spec:
postgres:
teamId: "acid"
volume:
size: 1Gi
numberOfInstances: 2
users:
zalando: # database owner
- superuser
- createdb
foo_user: [] # role for application foo
databases:
foo: zalando # dbname: owner
preparedDatabases:
bar: {}
postgresql:
version: "12"
How cluster is created:
import (
v1 "github.com/zalando/postgres-operator/pkg/apis/acid.zalan.do/v1"
...
)
// Reconcilation func:
...
// Define a new pg cluster
dep, err := r.createCluster(name, project)
if err != nil {
log.Error(err, "Could not generate pg struct")
return ctrl.Result{}, err
}
log.Info("Creating a new PG Cluster")
err = r.Create(ctx, dep)
if err != nil {
log.Error(err, "Failed to create new PG Cluster")
return ctrl.Result{}, err
}
...
// createCluster returns a Postgresql object
func (r *CustomCRDReconciler) createCluster(name string, m *projectv1.CustomCRD) (*v1.Postgresql, error) {
postgresql := &v1.Postgresql{
ObjectMeta: metav1.ObjectMeta{
Name: name,
Namespace: m.Namespace,
},
Spec: m.Spec.Postgres,
}
err := ctrl.SetControllerReference(m, postgresql, r.Scheme)
if err != nil {
return nil, err
}
return postgresql, nil
}
What I see in logs:
2020-08-28T10:19:10.487Z ERROR controller Reconciler error {"reconcilerGroup": "project.project.com", "reconcilerKind": "CustomCRD", "controller": "CustomCRD", "name": "CustomCRD-sample", "namespace": "default", "error": "postgresql.acid.zalan.do \"acid-CustomCRD-sample\" is invalid: [spec.postgresql.parameters: Invalid value: \"null\": spec.postgresql.parameters in body must be of type object: \"null\", spec.resources.limits.memory: Invalid value: \"\": spec.resources.limits.memory in body should match '^(\\d+(e\\d+)?|\\d+(\\.\\d+)?(e\\d+)?[EPTGMK]i?)$', spec.resources.limits.cpu: Invalid value: \"\": spec.resources.limits.cpu in body should match '^(\\d+m|\\d+(\\.\\d{1,3})?)$', spec.resources.requests.cpu: Invalid value: \"\": spec.resources.requests.cpu in body should match '^(\\d+m|\\d+(\\.\\d{1,3})?)$', spec.resources.requests.memory: Invalid value: \"\": spec.resources.requests.memory in body should match '^(\\d+(e\\d+)?|\\d+(\\.\\d+)?(e\\d+)?[EPTGMK]i?)$', spec.clone.cluster: Required value, spec.serviceAnnotations: Invalid value: \"null\": spec.serviceAnnotations in body must be of type object: \"null\", spec.patroni.slots: Invalid value: \"null\": spec.patroni.slots in body must be of type object: \"null\", spec.patroni.pg_hba: Invalid value: \"null\": spec.patroni.pg_hba in body must be of type array: \"null\", spec.patroni.initdb: Invalid value: \"null\": spec.patroni.initdb in body must be of type object: \"null\", spec.podAnnotations: Invalid value: \"null\": spec.podAnnotations in body must be of type object: \"null\", spec.tls: Invalid value: \"null\": spec.tls in body must be of type object: \"null\", spec.standby: Invalid value: \"null\": spec.standby in body must be of type object: \"null\"]"}
Metadata
Metadata
Assignees
Labels
No labels