Skip to content

Commit 3179fa8

Browse files
authored
K8SPG-611 when cr version is different than version, build init container image instead of using the operator image (#1236)
1 parent 67247a1 commit 3179fa8

File tree

3 files changed

+38
-2
lines changed

3 files changed

+38
-2
lines changed

e2e-tests/functions

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,8 @@ deploy_operator_gh() {
9292

9393
curl -s "https://raw.githubusercontent.com/percona/percona-postgresql-operator/${git_tag}/deploy/${cw_prefix}operator.yaml" >"${TEMP_DIR}/${cw_prefix}operator_${git_tag}.yaml"
9494

95-
yq eval '.spec.template.spec.containers[0].image = "'${REGISTRY_NAME_FULL}'percona/percona-postgresql-operator:'${git_tag#v}'"' \
95+
local docker_hub_org=$(echo "$IMAGE" | sed -E 's|(.*/)?([^/]+)/[^/]+(:.*)?|\2|')
96+
yq eval '.spec.template.spec.containers[0].image = "'${REGISTRY_NAME_FULL}''$docker_hub_org'/percona-postgresql-operator:'${git_tag#v}'"' \
9697
"${TEMP_DIR}/${cw_prefix}operator_${git_tag}.yaml" \
9798
| kubectl -n "${OPERATOR_NS:-$NAMESPACE}" apply -f -
9899
}

percona/k8s/util.go

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import (
1717
"sigs.k8s.io/controller-runtime/pkg/client"
1818

1919
"github.com/percona/percona-postgresql-operator/percona/naming"
20+
"github.com/percona/percona-postgresql-operator/percona/version"
2021
"github.com/percona/percona-postgresql-operator/pkg/apis/postgres-operator.crunchydata.com/v1beta1"
2122
)
2223

@@ -87,7 +88,28 @@ func InitImage(ctx context.Context, cl client.Reader, cluster *v1beta1.PostgresC
8788
if cluster != nil && cluster.Spec.InitContainer != nil && len(cluster.Spec.InitContainer.Image) > 0 {
8889
return cluster.Spec.InitContainer.Image, nil
8990
}
90-
return operatorImage(ctx, cl)
91+
92+
operatorImage, err := operatorImage(ctx, cl)
93+
if err != nil {
94+
return "", errors.Wrap(err, "get operator image")
95+
}
96+
97+
imageName := operatorImage
98+
99+
if cluster == nil {
100+
return imageName, nil
101+
}
102+
103+
crVersion, ok := cluster.Labels[v1beta1.LabelVersion]
104+
if !ok || crVersion == "" {
105+
return imageName, nil
106+
}
107+
108+
if cluster.CompareVersion(version.Version()) != 0 {
109+
imageName = strings.Split(operatorImage, ":")[0] + ":" + crVersion
110+
}
111+
112+
return imageName, nil
91113
}
92114

93115
func operatorImage(ctx context.Context, cl client.Reader) (string, error) {

percona/k8s/util_test.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -267,6 +267,19 @@ func TestInitImage(t *testing.T) {
267267
getPGBackrestComponent,
268268
"operator-image",
269269
},
270+
{
271+
"pgbackrest not specified init image with different versions",
272+
func() *v1beta1.PostgresCluster {
273+
cr := crunchyCr.DeepCopy()
274+
275+
oldVersion := "1.2.0"
276+
277+
cr.Labels = map[string]string{v1beta1.LabelVersion: oldVersion}
278+
return cr
279+
},
280+
getPGBackrestComponent,
281+
"operator-image:1.2.0",
282+
},
270283
{
271284
"pgbackrest general init image",
272285
func() *v1beta1.PostgresCluster {

0 commit comments

Comments
 (0)