Skip to content

Sidecar ports and env settings are not parsed and created in statefulset. #1245

Open
@sgrzemski-ias

Description

@sgrzemski-ias
  • Which image of the operator are you using? e.g. registry.opensource.zalan.do/acid/postgres-operator:v1.5.0
  • Where do you run it - cloud or metal? Kubernetes or OpenShift? [ GCP GKE ]
  • Are you running Postgres Operator in production? [ no ]
  • Type of issue? [ Bug report ]

Hi,
I am trying to deploy my first database using your postgres-operator. I am creating a simple postgresql object with postgres_exporter as a sidecar for monitoring purposes.

kind: postgresql
metadata:
  name: acid-minimal-cluster
spec:
  teamId: "ACID"
  volume:
    size: 1Gi
  numberOfInstances: 2
  users:
    # database owner
    zalando:
    - superuser
    - createdb
  databases:
    foo: zalando
  postgresql:
    version: "10"
  sidecars:
    - name: postgres-exporter
      image: wrouesnel/postgres_exporter
      ports:
        - containerPort: 9187

It comes from minimal example that can be found here: https://postgres-operator.readthedocs.io/en/refactoring-sidecars/user/
After applying this resource, a statefulset is created, but it has some values missing:

        - name: POD_NAME
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.name
        - name: POD_NAMESPACE
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.namespace
        - name: POSTGRES_USER
          value: postgres
        - name: POSTGRES_PASSWORD
          valueFrom:
            secretKeyRef:
              key: password
              name: postgres.acid-minimal-cluster.credentials.postgresql.acid.zalan.do
        image: wrouesnel/postgres_exporter
        imagePullPolicy: IfNotPresent
        name: postgres-exporter
        ports:
        - containerPort: 0
          protocol: TCP
        resources:
          limits:
            cpu: "1"
            memory: 500Mi
          requests:
            cpu: 100m
            memory: 100Mi
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
        volumeMounts:
        - mountPath: /home/postgres/pgdata
          name: pgdata

Same happens with variables, they are created as empty entries - {} and I cannot get my sidecar working. As a result, the statefulset is failing to create pods:
Warning FailedCreate 38s (x17 over 6m6s) statefulset-controller create Pod acid-minimal-cluster-0 in StatefulSet acid-minimal-cluster failed error: Pod "acid-minimal-cluster-0" is invalid: spec.containers[1].ports[0].containerPort: Required value

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions