From 7af5eb520d5ef2a306274b7ddf6d5efa75a94245 Mon Sep 17 00:00:00 2001 From: Andrii Dema Date: Mon, 19 May 2025 08:13:35 +0300 Subject: [PATCH 1/4] K8SPSMDB-1285: add version label to the crd https://perconadev.atlassian.net/browse/K8SPSMDB-1285 --- Makefile | 1 + config/crd/kustomization.yaml | 5 ++ config/crd/patches/versionlabel_in_psmdb.yaml | 9 +++ .../patches/versionlabel_in_psmdbbackup.yaml | 9 +++ .../patches/versionlabel_in_psmdbrestore.yaml | 9 +++ deploy/bundle.yaml | 15 +++++ deploy/crd.yaml | 15 +++++ deploy/cw-bundle.yaml | 15 +++++ e2e-tests/version-service/conf/crd.yaml | 15 +++++ pkg/apis/psmdb/v1/psmdb_defaults.go | 2 +- pkg/apis/psmdb/v1/psmdb_defaults_test.go | 2 +- pkg/apis/psmdb/v1/psmdb_types.go | 2 +- pkg/apis/psmdb/v1/zz_generated.deepcopy.go | 2 +- .../perconaservermongodb/connections_test.go | 4 +- .../perconaservermongodb/finalizers_test.go | 2 +- .../perconaservermongodb/psmdb_controller.go | 4 +- .../perconaservermongodb/statefulset_test.go | 2 +- .../perconaservermongodb/status_test.go | 4 +- .../perconaservermongodb/suite_test.go | 2 +- .../perconaservermongodb/version_test.go | 18 ++--- .../perconaservermongodbbackup_controller.go | 2 +- .../perconaservermongodbrestore_controller.go | 2 +- pkg/naming/labels.go | 11 +++- pkg/psmdb/init.go | 4 +- pkg/psmdb/mongos_test.go | 5 +- pkg/psmdb/service_test.go | 5 +- {version => pkg/version}/server.go | 0 pkg/version/version.go | 17 +++++ pkg/version/version.txt | 1 + pkg/version/version_test.go | 66 +++++++++++++++++++ version/version.go | 5 -- 31 files changed, 216 insertions(+), 39 deletions(-) create mode 100644 config/crd/patches/versionlabel_in_psmdb.yaml create mode 100644 config/crd/patches/versionlabel_in_psmdbbackup.yaml create mode 100644 config/crd/patches/versionlabel_in_psmdbrestore.yaml rename {version => pkg/version}/server.go (100%) create mode 100644 pkg/version/version.go create mode 100644 pkg/version/version.txt create mode 100644 pkg/version/version_test.go delete mode 100644 version/version.go diff --git a/Makefile b/Makefile index e2dcb922d9..7cf19bd1d9 100644 --- a/Makefile +++ b/Makefile @@ -14,6 +14,7 @@ help: ## Display this help. @awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m\033[0m\n"} /^[a-zA-Z_0-9-]+:.*?##/ { printf " \033[36m%-15s\033[0m %s\n", $$1, $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(MAKEFILE_LIST) generate: controller-gen ## Generate CRDs and RBAC files + go generate ./... $(CONTROLLER_GEN) crd:maxDescLen=0,allowDangerousTypes=true rbac:roleName=$(NAME) webhook paths="./..." output:crd:artifacts:config=config/crd/bases ## Generate WebhookConfiguration, Role and CustomResourceDefinition objects. $(CONTROLLER_GEN) object paths="./..." ## Generate code containing DeepCopy, DeepCopyInto, and DeepCopyObject method implementations. diff --git a/config/crd/kustomization.yaml b/config/crd/kustomization.yaml index bbf36ffdcb..1b353f72fa 100644 --- a/config/crd/kustomization.yaml +++ b/config/crd/kustomization.yaml @@ -7,6 +7,11 @@ resources: - bases/psmdb.percona.com_perconaservermongodbs.yaml #+kubebuilder:scaffold:crdkustomizeresource +patchesStrategicMerge: + - patches/versionlabel_in_psmdb.yaml + - patches/versionlabel_in_psmdbbackup.yaml + - patches/versionlabel_in_psmdbrestore.yaml + patches: - path: patches/deprecated-1.2.json target: diff --git a/config/crd/patches/versionlabel_in_psmdb.yaml b/config/crd/patches/versionlabel_in_psmdb.yaml new file mode 100644 index 0000000000..b3c6d9d9ee --- /dev/null +++ b/config/crd/patches/versionlabel_in_psmdb.yaml @@ -0,0 +1,9 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + name: perconaservermongodbs.psmdb.percona.com + labels: + app.kubernetes.io/name: percona-server-mongodb + app.kubernetes.io/version: v1.20.0 + app.kubernetes.io/component: crd + app.kubernetes.io/part-of: percona-server-mongodb-operator diff --git a/config/crd/patches/versionlabel_in_psmdbbackup.yaml b/config/crd/patches/versionlabel_in_psmdbbackup.yaml new file mode 100644 index 0000000000..4acde4b805 --- /dev/null +++ b/config/crd/patches/versionlabel_in_psmdbbackup.yaml @@ -0,0 +1,9 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + name: perconaservermongodbbackups.psmdb.percona.com + labels: + app.kubernetes.io/name: percona-server-mongodb + app.kubernetes.io/version: v1.20.0 + app.kubernetes.io/component: crd + app.kubernetes.io/part-of: percona-server-mongodb-operator diff --git a/config/crd/patches/versionlabel_in_psmdbrestore.yaml b/config/crd/patches/versionlabel_in_psmdbrestore.yaml new file mode 100644 index 0000000000..129e98f2d3 --- /dev/null +++ b/config/crd/patches/versionlabel_in_psmdbrestore.yaml @@ -0,0 +1,9 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + name: perconaservermongodbrestores.psmdb.percona.com + labels: + app.kubernetes.io/name: percona-server-mongodb + app.kubernetes.io/version: v1.20.0 + app.kubernetes.io/component: crd + app.kubernetes.io/part-of: percona-server-mongodb-operator diff --git a/deploy/bundle.yaml b/deploy/bundle.yaml index 9d863e068a..f80ad117b3 100644 --- a/deploy/bundle.yaml +++ b/deploy/bundle.yaml @@ -3,6 +3,11 @@ kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.16.3 + labels: + app.kubernetes.io/component: crd + app.kubernetes.io/name: percona-server-mongodb + app.kubernetes.io/part-of: percona-server-mongodb-operator + app.kubernetes.io/version: v1.20.0 name: perconaservermongodbbackups.psmdb.percona.com spec: group: psmdb.percona.com @@ -189,6 +194,11 @@ kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.16.3 + labels: + app.kubernetes.io/component: crd + app.kubernetes.io/name: percona-server-mongodb + app.kubernetes.io/part-of: percona-server-mongodb-operator + app.kubernetes.io/version: v1.20.0 name: perconaservermongodbrestores.psmdb.percona.com spec: group: psmdb.percona.com @@ -383,6 +393,11 @@ kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.16.3 + labels: + app.kubernetes.io/component: crd + app.kubernetes.io/name: percona-server-mongodb + app.kubernetes.io/part-of: percona-server-mongodb-operator + app.kubernetes.io/version: v1.20.0 name: perconaservermongodbs.psmdb.percona.com spec: group: psmdb.percona.com diff --git a/deploy/crd.yaml b/deploy/crd.yaml index ed0880ca25..692977fbec 100644 --- a/deploy/crd.yaml +++ b/deploy/crd.yaml @@ -3,6 +3,11 @@ kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.16.3 + labels: + app.kubernetes.io/component: crd + app.kubernetes.io/name: percona-server-mongodb + app.kubernetes.io/part-of: percona-server-mongodb-operator + app.kubernetes.io/version: v1.20.0 name: perconaservermongodbbackups.psmdb.percona.com spec: group: psmdb.percona.com @@ -189,6 +194,11 @@ kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.16.3 + labels: + app.kubernetes.io/component: crd + app.kubernetes.io/name: percona-server-mongodb + app.kubernetes.io/part-of: percona-server-mongodb-operator + app.kubernetes.io/version: v1.20.0 name: perconaservermongodbrestores.psmdb.percona.com spec: group: psmdb.percona.com @@ -383,6 +393,11 @@ kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.16.3 + labels: + app.kubernetes.io/component: crd + app.kubernetes.io/name: percona-server-mongodb + app.kubernetes.io/part-of: percona-server-mongodb-operator + app.kubernetes.io/version: v1.20.0 name: perconaservermongodbs.psmdb.percona.com spec: group: psmdb.percona.com diff --git a/deploy/cw-bundle.yaml b/deploy/cw-bundle.yaml index 010ee9f9f9..44808b65b5 100644 --- a/deploy/cw-bundle.yaml +++ b/deploy/cw-bundle.yaml @@ -3,6 +3,11 @@ kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.16.3 + labels: + app.kubernetes.io/component: crd + app.kubernetes.io/name: percona-server-mongodb + app.kubernetes.io/part-of: percona-server-mongodb-operator + app.kubernetes.io/version: v1.20.0 name: perconaservermongodbbackups.psmdb.percona.com spec: group: psmdb.percona.com @@ -189,6 +194,11 @@ kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.16.3 + labels: + app.kubernetes.io/component: crd + app.kubernetes.io/name: percona-server-mongodb + app.kubernetes.io/part-of: percona-server-mongodb-operator + app.kubernetes.io/version: v1.20.0 name: perconaservermongodbrestores.psmdb.percona.com spec: group: psmdb.percona.com @@ -383,6 +393,11 @@ kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.16.3 + labels: + app.kubernetes.io/component: crd + app.kubernetes.io/name: percona-server-mongodb + app.kubernetes.io/part-of: percona-server-mongodb-operator + app.kubernetes.io/version: v1.20.0 name: perconaservermongodbs.psmdb.percona.com spec: group: psmdb.percona.com diff --git a/e2e-tests/version-service/conf/crd.yaml b/e2e-tests/version-service/conf/crd.yaml index ed0880ca25..692977fbec 100644 --- a/e2e-tests/version-service/conf/crd.yaml +++ b/e2e-tests/version-service/conf/crd.yaml @@ -3,6 +3,11 @@ kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.16.3 + labels: + app.kubernetes.io/component: crd + app.kubernetes.io/name: percona-server-mongodb + app.kubernetes.io/part-of: percona-server-mongodb-operator + app.kubernetes.io/version: v1.20.0 name: perconaservermongodbbackups.psmdb.percona.com spec: group: psmdb.percona.com @@ -189,6 +194,11 @@ kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.16.3 + labels: + app.kubernetes.io/component: crd + app.kubernetes.io/name: percona-server-mongodb + app.kubernetes.io/part-of: percona-server-mongodb-operator + app.kubernetes.io/version: v1.20.0 name: perconaservermongodbrestores.psmdb.percona.com spec: group: psmdb.percona.com @@ -383,6 +393,11 @@ kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.16.3 + labels: + app.kubernetes.io/component: crd + app.kubernetes.io/name: percona-server-mongodb + app.kubernetes.io/part-of: percona-server-mongodb-operator + app.kubernetes.io/version: v1.20.0 name: perconaservermongodbs.psmdb.percona.com spec: group: psmdb.percona.com diff --git a/pkg/apis/psmdb/v1/psmdb_defaults.go b/pkg/apis/psmdb/v1/psmdb_defaults.go index a60dd40875..326dfc27e9 100644 --- a/pkg/apis/psmdb/v1/psmdb_defaults.go +++ b/pkg/apis/psmdb/v1/psmdb_defaults.go @@ -18,7 +18,7 @@ import ( "github.com/percona/percona-server-mongodb-operator/pkg/mcs" "github.com/percona/percona-server-mongodb-operator/pkg/util" "github.com/percona/percona-server-mongodb-operator/pkg/util/numstr" - "github.com/percona/percona-server-mongodb-operator/version" + "github.com/percona/percona-server-mongodb-operator/pkg/version" ) // DefaultDNSSuffix is a default dns suffix for the cluster service diff --git a/pkg/apis/psmdb/v1/psmdb_defaults_test.go b/pkg/apis/psmdb/v1/psmdb_defaults_test.go index 0fe6581eee..08c4a23d7d 100644 --- a/pkg/apis/psmdb/v1/psmdb_defaults_test.go +++ b/pkg/apis/psmdb/v1/psmdb_defaults_test.go @@ -9,7 +9,7 @@ import ( logf "sigs.k8s.io/controller-runtime/pkg/log" api "github.com/percona/percona-server-mongodb-operator/pkg/apis/psmdb/v1" - "github.com/percona/percona-server-mongodb-operator/version" + "github.com/percona/percona-server-mongodb-operator/pkg/version" ) func TestSetSafeDefaultPre116(t *testing.T) { diff --git a/pkg/apis/psmdb/v1/psmdb_types.go b/pkg/apis/psmdb/v1/psmdb_types.go index 40374a8111..8477fe3cd4 100644 --- a/pkg/apis/psmdb/v1/psmdb_types.go +++ b/pkg/apis/psmdb/v1/psmdb_types.go @@ -30,7 +30,7 @@ import ( "github.com/percona/percona-server-mongodb-operator/pkg/mcs" "github.com/percona/percona-server-mongodb-operator/pkg/psmdb/mongo" "github.com/percona/percona-server-mongodb-operator/pkg/util/numstr" - "github.com/percona/percona-server-mongodb-operator/version" + "github.com/percona/percona-server-mongodb-operator/pkg/version" ) // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object diff --git a/pkg/apis/psmdb/v1/zz_generated.deepcopy.go b/pkg/apis/psmdb/v1/zz_generated.deepcopy.go index 89525f7472..d77375368a 100644 --- a/pkg/apis/psmdb/v1/zz_generated.deepcopy.go +++ b/pkg/apis/psmdb/v1/zz_generated.deepcopy.go @@ -6,7 +6,7 @@ package v1 import ( metav1 "github.com/cert-manager/cert-manager/pkg/apis/meta/v1" - "github.com/percona/percona-server-mongodb-operator/version" + "github.com/percona/percona-server-mongodb-operator/pkg/version" corev1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/util/intstr" diff --git a/pkg/controller/perconaservermongodb/connections_test.go b/pkg/controller/perconaservermongodb/connections_test.go index a51b532ce4..823c85e656 100644 --- a/pkg/controller/perconaservermongodb/connections_test.go +++ b/pkg/controller/perconaservermongodb/connections_test.go @@ -23,7 +23,7 @@ import ( "github.com/percona/percona-server-mongodb-operator/pkg/psmdb" "github.com/percona/percona-server-mongodb-operator/pkg/psmdb/mongo" mongoFake "github.com/percona/percona-server-mongodb-operator/pkg/psmdb/mongo/fake" - "github.com/percona/percona-server-mongodb-operator/version" + "github.com/percona/percona-server-mongodb-operator/pkg/version" ) // TestConnectionLeaks aims to cover every initialization of a connection to the MongoDB database. @@ -44,7 +44,7 @@ func TestConnectionLeaks(t *testing.T) { Backup: api.BackupSpec{ Enabled: false, }, - CRVersion: version.Version, + CRVersion: version.Version(), Image: "percona/percona-server-mongodb:latest", Replsets: []*api.ReplsetSpec{ { diff --git a/pkg/controller/perconaservermongodb/finalizers_test.go b/pkg/controller/perconaservermongodb/finalizers_test.go index 523e177c57..a68b0027e7 100644 --- a/pkg/controller/perconaservermongodb/finalizers_test.go +++ b/pkg/controller/perconaservermongodb/finalizers_test.go @@ -9,7 +9,7 @@ import ( api "github.com/percona/percona-server-mongodb-operator/pkg/apis/psmdb/v1" "github.com/percona/percona-server-mongodb-operator/pkg/naming" - "github.com/percona/percona-server-mongodb-operator/version" + "github.com/percona/percona-server-mongodb-operator/pkg/version" ) func TestCheckFinalizers(t *testing.T) { diff --git a/pkg/controller/perconaservermongodb/psmdb_controller.go b/pkg/controller/perconaservermongodb/psmdb_controller.go index 63f5818933..77797bdc7d 100644 --- a/pkg/controller/perconaservermongodb/psmdb_controller.go +++ b/pkg/controller/perconaservermongodb/psmdb_controller.go @@ -41,7 +41,7 @@ import ( "github.com/percona/percona-server-mongodb-operator/pkg/psmdb/secret" "github.com/percona/percona-server-mongodb-operator/pkg/psmdb/tls" "github.com/percona/percona-server-mongodb-operator/pkg/util" - "github.com/percona/percona-server-mongodb-operator/version" + "github.com/percona/percona-server-mongodb-operator/pkg/version" ) var secretFileMode int32 = 288 @@ -687,7 +687,7 @@ func (r *ReconcilePerconaServerMongoDB) setCRVersion(ctx context.Context, cr *ap } orig := cr.DeepCopy() - cr.Spec.CRVersion = version.Version + cr.Spec.CRVersion = version.Version() if err := r.client.Patch(ctx, cr, client.MergeFrom(orig)); err != nil { return errors.Wrap(err, "patch CR") diff --git a/pkg/controller/perconaservermongodb/statefulset_test.go b/pkg/controller/perconaservermongodb/statefulset_test.go index f2d7b9b374..b36171de0b 100644 --- a/pkg/controller/perconaservermongodb/statefulset_test.go +++ b/pkg/controller/perconaservermongodb/statefulset_test.go @@ -14,7 +14,7 @@ import ( api "github.com/percona/percona-server-mongodb-operator/pkg/apis/psmdb/v1" "github.com/percona/percona-server-mongodb-operator/pkg/naming" - "github.com/percona/percona-server-mongodb-operator/version" + "github.com/percona/percona-server-mongodb-operator/pkg/version" ) func TestReconcileStatefulSet(t *testing.T) { diff --git a/pkg/controller/perconaservermongodb/status_test.go b/pkg/controller/perconaservermongodb/status_test.go index 1f1ab35c9a..e2d6765d94 100644 --- a/pkg/controller/perconaservermongodb/status_test.go +++ b/pkg/controller/perconaservermongodb/status_test.go @@ -16,7 +16,7 @@ import ( api "github.com/percona/percona-server-mongodb-operator/pkg/apis/psmdb/v1" fakeBackup "github.com/percona/percona-server-mongodb-operator/pkg/psmdb/backup/fake" faketls "github.com/percona/percona-server-mongodb-operator/pkg/psmdb/tls/fake" - "github.com/percona/percona-server-mongodb-operator/version" + "github.com/percona/percona-server-mongodb-operator/pkg/version" ) // creates a fake client to mock API calls with the mock objects @@ -97,7 +97,7 @@ func TestConnectionEndpoint(t *testing.T) { ObjectMeta: metav1.ObjectMeta{Name: "psmdb-mock", Namespace: "psmdb"}, Spec: api.PerconaServerMongoDBSpec{ Image: "some-image", - CRVersion: version.Version, + CRVersion: version.Version(), Replsets: []*api.ReplsetSpec{ { Name: "rs0", diff --git a/pkg/controller/perconaservermongodb/suite_test.go b/pkg/controller/perconaservermongodb/suite_test.go index 9aa5391f9b..1d89bb4248 100644 --- a/pkg/controller/perconaservermongodb/suite_test.go +++ b/pkg/controller/perconaservermongodb/suite_test.go @@ -21,7 +21,7 @@ import ( psmdbv1 "github.com/percona/percona-server-mongodb-operator/pkg/apis/psmdb/v1" "github.com/percona/percona-server-mongodb-operator/pkg/psmdb/backup" "github.com/percona/percona-server-mongodb-operator/pkg/psmdb/tls" - "github.com/percona/percona-server-mongodb-operator/version" + "github.com/percona/percona-server-mongodb-operator/pkg/version" ) // These tests use Ginkgo (BDD-style Go testing framework). Refer to diff --git a/pkg/controller/perconaservermongodb/version_test.go b/pkg/controller/perconaservermongodb/version_test.go index 16effab84b..aa32f79d43 100644 --- a/pkg/controller/perconaservermongodb/version_test.go +++ b/pkg/controller/perconaservermongodb/version_test.go @@ -25,7 +25,7 @@ import ( "github.com/percona/percona-server-mongodb-operator/pkg/apis" api "github.com/percona/percona-server-mongodb-operator/pkg/apis/psmdb/v1" "github.com/percona/percona-server-mongodb-operator/pkg/k8s" - "github.com/percona/percona-server-mongodb-operator/version" + "github.com/percona/percona-server-mongodb-operator/pkg/version" ) func Test_majorUpgradeRequested(t *testing.T) { @@ -360,7 +360,7 @@ func TestVersionMeta(t *testing.T) { }, want: VersionMeta{ Apply: "disabled", - Version: version.Version, + Version: version.Version(), ClusterSize: 3, }, namespace: "test-namespace", @@ -470,7 +470,7 @@ func TestVersionMeta(t *testing.T) { }, want: VersionMeta{ Apply: "disabled", - Version: version.Version, + Version: version.Version(), ClusterSize: 3, BackupsEnabled: false, }, @@ -498,7 +498,7 @@ func TestVersionMeta(t *testing.T) { }, want: VersionMeta{ Apply: "disabled", - Version: version.Version, + Version: version.Version(), HelmDeployOperator: true, ClusterWideEnabled: true, ClusterSize: 4, @@ -530,7 +530,7 @@ func TestVersionMeta(t *testing.T) { }, want: VersionMeta{ Apply: "disabled", - Version: version.Version, + Version: version.Version(), HelmDeployOperator: true, ClusterWideEnabled: true, ClusterSize: 4, @@ -709,7 +709,7 @@ func (b *fakeVS) Apply(_ context.Context, req *pbVersion.ApplyRequest) (*pbVersi DatabaseVersion: "database-version", HashicorpVaultEnabled: true, KubeVersion: "kube-version", - OperatorVersion: version.Version, + OperatorVersion: version.Version(), Platform: productName, PmmVersion: "pmm-version", ShardingEnabled: true, @@ -772,7 +772,7 @@ func TestVersionService(t *testing.T) { }, vm: VersionMeta{ Apply: string(api.UpgradeStrategyDisabled), - Version: version.Version, + Version: version.Version(), }, want: DepVersion{}, }, @@ -787,7 +787,7 @@ func TestVersionService(t *testing.T) { }, vm: VersionMeta{ Apply: string(api.UpgradeStrategyNever), - Version: version.Version, + Version: version.Version(), }, want: DepVersion{}, }, @@ -809,7 +809,7 @@ func TestVersionService(t *testing.T) { PMMVersion: "pmm-version", BackupVersion: "backup-version", CRUID: "custom-resource-uid", - Version: version.Version, + Version: version.Version(), ClusterWideEnabled: true, HashicorpVaultEnabled: true, ShardingEnabled: true, diff --git a/pkg/controller/perconaservermongodbbackup/perconaservermongodbbackup_controller.go b/pkg/controller/perconaservermongodbbackup/perconaservermongodbbackup_controller.go index 5a7259b8b9..de1cfcbcd3 100644 --- a/pkg/controller/perconaservermongodbbackup/perconaservermongodbbackup_controller.go +++ b/pkg/controller/perconaservermongodbbackup/perconaservermongodbbackup_controller.go @@ -34,7 +34,7 @@ import ( "github.com/percona/percona-server-mongodb-operator/pkg/naming" "github.com/percona/percona-server-mongodb-operator/pkg/psmdb" "github.com/percona/percona-server-mongodb-operator/pkg/psmdb/backup" - "github.com/percona/percona-server-mongodb-operator/version" + "github.com/percona/percona-server-mongodb-operator/pkg/version" ) /** diff --git a/pkg/controller/perconaservermongodbrestore/perconaservermongodbrestore_controller.go b/pkg/controller/perconaservermongodbrestore/perconaservermongodbrestore_controller.go index 56e8ed1084..c1bb0b9f88 100644 --- a/pkg/controller/perconaservermongodbrestore/perconaservermongodbrestore_controller.go +++ b/pkg/controller/perconaservermongodbrestore/perconaservermongodbrestore_controller.go @@ -30,7 +30,7 @@ import ( "github.com/percona/percona-server-mongodb-operator/pkg/psmdb" "github.com/percona/percona-server-mongodb-operator/pkg/psmdb/backup" "github.com/percona/percona-server-mongodb-operator/pkg/util" - "github.com/percona/percona-server-mongodb-operator/version" + "github.com/percona/percona-server-mongodb-operator/pkg/version" ) // Add creates a new PerconaServerMongoDBRestore Controller and adds it to the Manager. The Manager will set fields on the Controller diff --git a/pkg/naming/labels.go b/pkg/naming/labels.go index 175d2f394a..939afd925b 100644 --- a/pkg/naming/labels.go +++ b/pkg/naming/labels.go @@ -14,6 +14,8 @@ const ( LabelKubernetesPartOf = labelKubernetesPrefix + "part-of" LabelKubernetesComponent = labelKubernetesPrefix + "component" LabelKubernetesReplset = labelKubernetesPrefix + "replset" + + LabelKubernetesOperatorVersion = labelKubernetesPrefix + "version" ) const ( @@ -22,15 +24,20 @@ const ( LabelCluster = perconaPrefix + "cluster" ) -func ClusterLabels(cr *api.PerconaServerMongoDB) map[string]string { +func Labels() map[string]string { return map[string]string{ LabelKubernetesName: "percona-server-mongodb", - LabelKubernetesInstance: cr.Name, LabelKubernetesManagedBy: "percona-server-mongodb-operator", LabelKubernetesPartOf: "percona-server-mongodb", } } +func ClusterLabels(cr *api.PerconaServerMongoDB) map[string]string { + l := Labels() + l[LabelKubernetesInstance] = cr.Name + return l +} + func ServiceLabels(cr *api.PerconaServerMongoDB, replset *api.ReplsetSpec) map[string]string { return RSLabels(cr, replset) } diff --git a/pkg/psmdb/init.go b/pkg/psmdb/init.go index 33383f11fe..04a9ef981b 100644 --- a/pkg/psmdb/init.go +++ b/pkg/psmdb/init.go @@ -6,7 +6,7 @@ import ( corev1 "k8s.io/api/core/v1" api "github.com/percona/percona-server-mongodb-operator/pkg/apis/psmdb/v1" - "github.com/percona/percona-server-mongodb-operator/version" + "github.com/percona/percona-server-mongodb-operator/pkg/version" ) func EntrypointInitContainer(cr *api.PerconaServerMongoDB, name, image string, pullPolicy corev1.PullPolicy, command []string) corev1.Container { @@ -40,7 +40,7 @@ func EntrypointInitContainer(cr *api.PerconaServerMongoDB, name, image string, p func InitContainers(cr *api.PerconaServerMongoDB, initImage string) []corev1.Container { image := cr.Spec.InitImage if len(image) == 0 { - if cr.CompareVersion(version.Version) != 0 { + if cr.CompareVersion(version.Version()) != 0 { image = strings.Split(initImage, ":")[0] + ":" + cr.Spec.CRVersion } else { image = initImage diff --git a/pkg/psmdb/mongos_test.go b/pkg/psmdb/mongos_test.go index 4c270b48a4..57d215175a 100644 --- a/pkg/psmdb/mongos_test.go +++ b/pkg/psmdb/mongos_test.go @@ -10,7 +10,7 @@ import ( "k8s.io/utils/ptr" api "github.com/percona/percona-server-mongodb-operator/pkg/apis/psmdb/v1" - "github.com/percona/percona-server-mongodb-operator/version" + "github.com/percona/percona-server-mongodb-operator/pkg/version" ) func TestMongosService(t *testing.T) { @@ -124,7 +124,7 @@ func TestMongosService(t *testing.T) { Namespace: "test-ns", }, Spec: api.PerconaServerMongoDBSpec{ - CRVersion: version.Version, + CRVersion: version.Version(), Sharding: api.Sharding{ Mongos: &api.MongosSpec{ Expose: api.MongosExpose{ @@ -138,5 +138,4 @@ func TestMongosService(t *testing.T) { assert.Equal(t, tt.expectedSpec, spec) }) } - } diff --git a/pkg/psmdb/service_test.go b/pkg/psmdb/service_test.go index 3fc959ef1c..fcbe9e2c37 100644 --- a/pkg/psmdb/service_test.go +++ b/pkg/psmdb/service_test.go @@ -15,7 +15,7 @@ import ( "sigs.k8s.io/controller-runtime/pkg/client/fake" api "github.com/percona/percona-server-mongodb-operator/pkg/apis/psmdb/v1" - "github.com/percona/percona-server-mongodb-operator/version" + "github.com/percona/percona-server-mongodb-operator/pkg/version" ) func TestMongosHost(t *testing.T) { @@ -297,12 +297,11 @@ func TestExternalService(t *testing.T) { Namespace: "test-ns", }, Spec: api.PerconaServerMongoDBSpec{ - CRVersion: version.Version, + CRVersion: version.Version(), }, } svc := ExternalService(cr, tt.replset, tt.podName) assert.Equal(t, tt.expectedSvc, svc) }) } - } diff --git a/version/server.go b/pkg/version/server.go similarity index 100% rename from version/server.go rename to pkg/version/server.go diff --git a/pkg/version/version.go b/pkg/version/version.go new file mode 100644 index 0000000000..cdde224516 --- /dev/null +++ b/pkg/version/version.go @@ -0,0 +1,17 @@ +package version + +import ( + _ "embed" + "strings" +) + +//go:generate sh -c "yq -i '.metadata.labels.\"app.kubernetes.io/version\" = \"v\" + load(\"version.txt\")' ../../config/crd/patches/versionlabel_in_psmdb.yaml" +//go:generate sh -c "yq -i '.metadata.labels.\"app.kubernetes.io/version\" = \"v\" + load(\"version.txt\")' ../../config/crd/patches/versionlabel_in_psmdbbackup.yaml" +//go:generate sh -c "yq -i '.metadata.labels.\"app.kubernetes.io/version\" = \"v\" + load(\"version.txt\")' ../../config/crd/patches/versionlabel_in_psmdbrestore.yaml" + +//go:embed version.txt +var version string + +func Version() string { + return strings.TrimSpace(version) +} diff --git a/pkg/version/version.txt b/pkg/version/version.txt new file mode 100644 index 0000000000..3989355915 --- /dev/null +++ b/pkg/version/version.txt @@ -0,0 +1 @@ +1.20.0 diff --git a/pkg/version/version_test.go b/pkg/version/version_test.go new file mode 100644 index 0000000000..d81d416990 --- /dev/null +++ b/pkg/version/version_test.go @@ -0,0 +1,66 @@ +package version_test + +import ( + "bytes" + "os" + "path/filepath" + "runtime" + "slices" + "testing" + + "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" + "sigs.k8s.io/yaml" + + "github.com/percona/percona-server-mongodb-operator/pkg/naming" + "github.com/percona/percona-server-mongodb-operator/pkg/version" +) + +func TestCRDVersionLabel(t *testing.T) { + crdNames := []string{ + "perconaservermongodbbackups.psmdb.percona.com", + "perconaservermongodbrestores.psmdb.percona.com", + "perconaservermongodbs.psmdb.percona.com", + } + + _, filename, _, ok := runtime.Caller(0) + if !ok { + t.Fatalf("Failed to get caller information") + } + dir := filepath.Dir(filename) + crdPath := filepath.Join(dir, "..", "..", "deploy", "crd.yaml") + + data, err := os.ReadFile(crdPath) + if err != nil { + t.Fatalf("Failed to read file: %s", err.Error()) + } + yamlDocs := bytes.Split(data, []byte("\n---\n")) + for _, doc := range yamlDocs { + if len(doc) == 0 { + continue + } + crd := new(v1.CustomResourceDefinition) + if err := yaml.Unmarshal(doc, crd); err != nil { + t.Fatalf("Failed to unmarshal crd: %s", err.Error()) + } + if !slices.Contains(crdNames, crd.Name) { + continue + } + expectedVersion := "v" + version.Version() + expectedLabels := naming.Labels() + expectedLabels[naming.LabelKubernetesOperatorVersion] = expectedVersion + expectedLabels[naming.LabelKubernetesComponent] = "crd" + + // TODO: Remove these lines once the https://perconadev.atlassian.net/browse/K8SPSMDB-1370 is complete + expectedLabels[naming.LabelKubernetesPartOf] = "percona-server-mongodb-operator" + delete(expectedLabels, naming.LabelKubernetesManagedBy) + + for k, expectedValue := range expectedLabels { + if crd.Labels[k] == expectedValue { + continue + } + t.Logf("invalid value is specified in %s label of %s CustomResourceDefinition: have: %s, expected: %s", k, crd.Name, crd.Labels[k], expectedValue) + t.Log([]byte(crd.Labels[k]), []byte(expectedValue)) + t.Fail() + } + } +} diff --git a/version/version.go b/version/version.go deleted file mode 100644 index 7810f54403..0000000000 --- a/version/version.go +++ /dev/null @@ -1,5 +0,0 @@ -package version - -var ( - Version = "1.20.0" -) From be28372c361092a08842cd93e871b3b6266432f5 Mon Sep 17 00:00:00 2001 From: Andrii Dema Date: Mon, 19 May 2025 14:36:19 +0300 Subject: [PATCH 2/4] set version to the `1.21.0` --- config/crd/patches/versionlabel_in_psmdb.yaml | 2 +- config/crd/patches/versionlabel_in_psmdbbackup.yaml | 2 +- config/crd/patches/versionlabel_in_psmdbrestore.yaml | 2 +- deploy/bundle.yaml | 6 +++--- deploy/crd.yaml | 6 +++--- deploy/cw-bundle.yaml | 6 +++--- e2e-tests/version-service/conf/crd.yaml | 6 +++--- pkg/version/version.txt | 2 +- 8 files changed, 16 insertions(+), 16 deletions(-) diff --git a/config/crd/patches/versionlabel_in_psmdb.yaml b/config/crd/patches/versionlabel_in_psmdb.yaml index b3c6d9d9ee..8f50abe104 100644 --- a/config/crd/patches/versionlabel_in_psmdb.yaml +++ b/config/crd/patches/versionlabel_in_psmdb.yaml @@ -4,6 +4,6 @@ metadata: name: perconaservermongodbs.psmdb.percona.com labels: app.kubernetes.io/name: percona-server-mongodb - app.kubernetes.io/version: v1.20.0 + app.kubernetes.io/version: v1.21.0 app.kubernetes.io/component: crd app.kubernetes.io/part-of: percona-server-mongodb-operator diff --git a/config/crd/patches/versionlabel_in_psmdbbackup.yaml b/config/crd/patches/versionlabel_in_psmdbbackup.yaml index 4acde4b805..8f27298341 100644 --- a/config/crd/patches/versionlabel_in_psmdbbackup.yaml +++ b/config/crd/patches/versionlabel_in_psmdbbackup.yaml @@ -4,6 +4,6 @@ metadata: name: perconaservermongodbbackups.psmdb.percona.com labels: app.kubernetes.io/name: percona-server-mongodb - app.kubernetes.io/version: v1.20.0 + app.kubernetes.io/version: v1.21.0 app.kubernetes.io/component: crd app.kubernetes.io/part-of: percona-server-mongodb-operator diff --git a/config/crd/patches/versionlabel_in_psmdbrestore.yaml b/config/crd/patches/versionlabel_in_psmdbrestore.yaml index 129e98f2d3..7a1dec8877 100644 --- a/config/crd/patches/versionlabel_in_psmdbrestore.yaml +++ b/config/crd/patches/versionlabel_in_psmdbrestore.yaml @@ -4,6 +4,6 @@ metadata: name: perconaservermongodbrestores.psmdb.percona.com labels: app.kubernetes.io/name: percona-server-mongodb - app.kubernetes.io/version: v1.20.0 + app.kubernetes.io/version: v1.21.0 app.kubernetes.io/component: crd app.kubernetes.io/part-of: percona-server-mongodb-operator diff --git a/deploy/bundle.yaml b/deploy/bundle.yaml index f80ad117b3..4312065d7b 100644 --- a/deploy/bundle.yaml +++ b/deploy/bundle.yaml @@ -7,7 +7,7 @@ metadata: app.kubernetes.io/component: crd app.kubernetes.io/name: percona-server-mongodb app.kubernetes.io/part-of: percona-server-mongodb-operator - app.kubernetes.io/version: v1.20.0 + app.kubernetes.io/version: v1.21.0 name: perconaservermongodbbackups.psmdb.percona.com spec: group: psmdb.percona.com @@ -198,7 +198,7 @@ metadata: app.kubernetes.io/component: crd app.kubernetes.io/name: percona-server-mongodb app.kubernetes.io/part-of: percona-server-mongodb-operator - app.kubernetes.io/version: v1.20.0 + app.kubernetes.io/version: v1.21.0 name: perconaservermongodbrestores.psmdb.percona.com spec: group: psmdb.percona.com @@ -397,7 +397,7 @@ metadata: app.kubernetes.io/component: crd app.kubernetes.io/name: percona-server-mongodb app.kubernetes.io/part-of: percona-server-mongodb-operator - app.kubernetes.io/version: v1.20.0 + app.kubernetes.io/version: v1.21.0 name: perconaservermongodbs.psmdb.percona.com spec: group: psmdb.percona.com diff --git a/deploy/crd.yaml b/deploy/crd.yaml index 692977fbec..b41742a74f 100644 --- a/deploy/crd.yaml +++ b/deploy/crd.yaml @@ -7,7 +7,7 @@ metadata: app.kubernetes.io/component: crd app.kubernetes.io/name: percona-server-mongodb app.kubernetes.io/part-of: percona-server-mongodb-operator - app.kubernetes.io/version: v1.20.0 + app.kubernetes.io/version: v1.21.0 name: perconaservermongodbbackups.psmdb.percona.com spec: group: psmdb.percona.com @@ -198,7 +198,7 @@ metadata: app.kubernetes.io/component: crd app.kubernetes.io/name: percona-server-mongodb app.kubernetes.io/part-of: percona-server-mongodb-operator - app.kubernetes.io/version: v1.20.0 + app.kubernetes.io/version: v1.21.0 name: perconaservermongodbrestores.psmdb.percona.com spec: group: psmdb.percona.com @@ -397,7 +397,7 @@ metadata: app.kubernetes.io/component: crd app.kubernetes.io/name: percona-server-mongodb app.kubernetes.io/part-of: percona-server-mongodb-operator - app.kubernetes.io/version: v1.20.0 + app.kubernetes.io/version: v1.21.0 name: perconaservermongodbs.psmdb.percona.com spec: group: psmdb.percona.com diff --git a/deploy/cw-bundle.yaml b/deploy/cw-bundle.yaml index 44808b65b5..debf6c4f93 100644 --- a/deploy/cw-bundle.yaml +++ b/deploy/cw-bundle.yaml @@ -7,7 +7,7 @@ metadata: app.kubernetes.io/component: crd app.kubernetes.io/name: percona-server-mongodb app.kubernetes.io/part-of: percona-server-mongodb-operator - app.kubernetes.io/version: v1.20.0 + app.kubernetes.io/version: v1.21.0 name: perconaservermongodbbackups.psmdb.percona.com spec: group: psmdb.percona.com @@ -198,7 +198,7 @@ metadata: app.kubernetes.io/component: crd app.kubernetes.io/name: percona-server-mongodb app.kubernetes.io/part-of: percona-server-mongodb-operator - app.kubernetes.io/version: v1.20.0 + app.kubernetes.io/version: v1.21.0 name: perconaservermongodbrestores.psmdb.percona.com spec: group: psmdb.percona.com @@ -397,7 +397,7 @@ metadata: app.kubernetes.io/component: crd app.kubernetes.io/name: percona-server-mongodb app.kubernetes.io/part-of: percona-server-mongodb-operator - app.kubernetes.io/version: v1.20.0 + app.kubernetes.io/version: v1.21.0 name: perconaservermongodbs.psmdb.percona.com spec: group: psmdb.percona.com diff --git a/e2e-tests/version-service/conf/crd.yaml b/e2e-tests/version-service/conf/crd.yaml index 692977fbec..b41742a74f 100644 --- a/e2e-tests/version-service/conf/crd.yaml +++ b/e2e-tests/version-service/conf/crd.yaml @@ -7,7 +7,7 @@ metadata: app.kubernetes.io/component: crd app.kubernetes.io/name: percona-server-mongodb app.kubernetes.io/part-of: percona-server-mongodb-operator - app.kubernetes.io/version: v1.20.0 + app.kubernetes.io/version: v1.21.0 name: perconaservermongodbbackups.psmdb.percona.com spec: group: psmdb.percona.com @@ -198,7 +198,7 @@ metadata: app.kubernetes.io/component: crd app.kubernetes.io/name: percona-server-mongodb app.kubernetes.io/part-of: percona-server-mongodb-operator - app.kubernetes.io/version: v1.20.0 + app.kubernetes.io/version: v1.21.0 name: perconaservermongodbrestores.psmdb.percona.com spec: group: psmdb.percona.com @@ -397,7 +397,7 @@ metadata: app.kubernetes.io/component: crd app.kubernetes.io/name: percona-server-mongodb app.kubernetes.io/part-of: percona-server-mongodb-operator - app.kubernetes.io/version: v1.20.0 + app.kubernetes.io/version: v1.21.0 name: perconaservermongodbs.psmdb.percona.com spec: group: psmdb.percona.com diff --git a/pkg/version/version.txt b/pkg/version/version.txt index 3989355915..3500250a4b 100644 --- a/pkg/version/version.txt +++ b/pkg/version/version.txt @@ -1 +1 @@ -1.20.0 +1.21.0 From 66af4c3a04dada52ac624519560664950e90cb11 Mon Sep 17 00:00:00 2001 From: Andrii Dema Date: Wed, 21 May 2025 13:06:05 +0300 Subject: [PATCH 3/4] fix merge --- pkg/psmdb/pmm/pmm_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/psmdb/pmm/pmm_test.go b/pkg/psmdb/pmm/pmm_test.go index 4024bbf260..145c661585 100644 --- a/pkg/psmdb/pmm/pmm_test.go +++ b/pkg/psmdb/pmm/pmm_test.go @@ -65,7 +65,7 @@ func TestContainer(t *testing.T) { Namespace: "test-ns", }, Spec: api.PerconaServerMongoDBSpec{ - CRVersion: version.Version, + CRVersion: version.Version(), ImagePullPolicy: corev1.PullAlways, PMM: api.PMMSpec{ Enabled: tt.pmmEnabled, From aad72a15d0be05a5a6944b43e6fc69d1af7702ae Mon Sep 17 00:00:00 2001 From: Andrii Dema Date: Wed, 21 May 2025 13:20:54 +0300 Subject: [PATCH 4/4] fix manifests --- deploy/bundle.yaml | 2 +- deploy/cw-bundle.yaml | 2 +- deploy/cw-operator.yaml | 2 +- deploy/operator.yaml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/deploy/bundle.yaml b/deploy/bundle.yaml index c993ef0b85..4312065d7b 100644 --- a/deploy/bundle.yaml +++ b/deploy/bundle.yaml @@ -19803,7 +19803,7 @@ spec: serviceAccountName: percona-server-mongodb-operator containers: - name: percona-server-mongodb-operator - image: percona/percona-server-mongodb-operator:1.20.0 + image: perconalab/percona-server-mongodb-operator:main imagePullPolicy: Always livenessProbe: failureThreshold: 3 diff --git a/deploy/cw-bundle.yaml b/deploy/cw-bundle.yaml index 21176bd4f2..debf6c4f93 100644 --- a/deploy/cw-bundle.yaml +++ b/deploy/cw-bundle.yaml @@ -19824,7 +19824,7 @@ spec: serviceAccountName: percona-server-mongodb-operator containers: - name: percona-server-mongodb-operator - image: percona/percona-server-mongodb-operator:1.20.0 + image: perconalab/percona-server-mongodb-operator:main imagePullPolicy: Always livenessProbe: failureThreshold: 3 diff --git a/deploy/cw-operator.yaml b/deploy/cw-operator.yaml index e1effb043b..b8ec3d38e6 100644 --- a/deploy/cw-operator.yaml +++ b/deploy/cw-operator.yaml @@ -15,7 +15,7 @@ spec: serviceAccountName: percona-server-mongodb-operator containers: - name: percona-server-mongodb-operator - image: percona/percona-server-mongodb-operator:1.20.0 + image: perconalab/percona-server-mongodb-operator:main imagePullPolicy: Always livenessProbe: failureThreshold: 3 diff --git a/deploy/operator.yaml b/deploy/operator.yaml index db09479e99..90d4d04a51 100644 --- a/deploy/operator.yaml +++ b/deploy/operator.yaml @@ -15,7 +15,7 @@ spec: serviceAccountName: percona-server-mongodb-operator containers: - name: percona-server-mongodb-operator - image: percona/percona-server-mongodb-operator:1.20.0 + image: perconalab/percona-server-mongodb-operator:main imagePullPolicy: Always livenessProbe: failureThreshold: 3