Skip to content

Proper image defaults #1671

Description

@Kajot-dev

Proposal

From the CR standpoint both in the PerconaPGCluster resource and the upstream PostgresCluster image fields are optional - even though in practice they are not, and the error about missing images only appreas in the events of the upstream resource.

In the upstream the feature to control the default images through env variables was introduced and the default operator installation comes with these predefined.

Downstream Percona has some issues with this approach

  • Certified images definitions are NOT included in the default bundle
  • There is no concept of crVersion in the upstream, so the upstream solution defines default images once, not per crVersion
  • Percona has more/other images such as PMM, or configurable initContainer and extensions installer image

I would like to propose a solution where operator would automatically pick certified images for a given crVersion which would make the image fields actually optional instead of silently erroring (warning events are present only on the upstream resource). The solution would be consisting of:

  • An YAML file embed withing the binary containing the per crVersion image definitions. This would need to either be automated or maintained once per release
  • An option to partially or fully override the images or only registry using either a configmap or a mounted yaml (mounted to the operator deployment)
  • Possibility of defining images on the CR and backwards compatibility would be preserved

Use-Case

It would reduce a maintenance burden of maintainingg the image versions and manually checking Percona documentation for certified images which correspond to a given crVersion.

Given the presence of the MR for supporting official postgres images, it would also be possible to easily switch to these by default

Is this a feature you are interested in implementing yourself?

Yes

Anything else?

A draft, not code-ready proposal is present in: #1640

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions