diff --git a/Makefile b/Makefile index 7aa43fec38..5c30b240f9 100644 --- a/Makefile +++ b/Makefile @@ -118,11 +118,13 @@ release: manifests -e "/^spec:/,/^ image:/{s#image: .*#image: $(IMAGE_MONGOD80)#}" \ -e "/^ backup:/,/^ image:/{s#image: .*#image: $(IMAGE_BACKUP)#}" \ -e "s#initImage: .*#initImage: percona/percona-server-mongodb-operator:$(VERSION)#g" \ - -e "/^ pmm:/,/^ image:/{s#image: .*#image: $(IMAGE_PMM_CLIENT)#}" deploy/cr.yaml + -e "/^ logcollector:/,/^ image:/{s#image: .*#image: $(IMAGE_LOGCOLLECTOR)#}" \ + -e "/^ pmm:/,/^ image:/{s#image: .*#image: $(IMAGE_PMM3_CLIENT)#}" deploy/cr.yaml $(SED) -i \ -e "s|perconalab/percona-server-mongodb-operator:main-mongod8.0|$(IMAGE_MONGOD80)|g" \ -e "s|perconalab/percona-server-mongodb-operator:main-backup|$(IMAGE_BACKUP)|g" \ -e "s|perconalab/percona-server-mongodb-operator:main|$(IMAGE_OPERATOR)|g" \ + -e "s|perconalab/fluentbit:main-logcollector|$(IMAGE_LOGCOLLECTOR)|g" \ pkg/controller/perconaservermongodb/testdata/reconcile-statefulset/*.yaml $(SED) -i "s|cr.Spec.InitImage = \".*\"|cr.Spec.InitImage = \"${IMAGE_OPERATOR}\"|g" pkg/controller/perconaservermongodb/suite_test.go @@ -132,7 +134,7 @@ MAJOR_VER := $(shell grep -oE "crVersion: .*" deploy/cr.yaml|grep -oE "[0-9]+\.[ MINOR_VER := $(shell grep -oE "crVersion: .*" deploy/cr.yaml|grep -oE "[0-9]+\.[0-9]+\.[0-9]+"|cut -d'.' -f2) NEXT_VER ?= $(MAJOR_VER).$$(($(MINOR_VER) + 1)).0 after-release: manifests - $(SED) -i "/Version = \"/s/Version = \".*/Version = \"$(NEXT_VER)\"/" version/version.go + echo $(NEXT_VER) > pkg/version/version.txt $(SED) -i \ -e "s/crVersion: .*/crVersion: $(NEXT_VER)/" \ -e "/^spec:/,/^ image:/{s#image: .*#image: perconalab/percona-server-mongodb-operator:main-mongod8.0#}" deploy/cr-minimal.yaml @@ -141,11 +143,13 @@ after-release: manifests -e "/^spec:/,/^ image:/{s#image: .*#image: perconalab/percona-server-mongodb-operator:main-mongod8.0#}" \ -e "/^ backup:/,/^ image:/{s#image: .*#image: perconalab/percona-server-mongodb-operator:main-backup#}" \ -e "s#initImage: .*#initImage: perconalab/percona-server-mongodb-operator:main#g" \ - -e "/^ pmm:/,/^ image:/{s#image: .*#image: perconalab/pmm-client:dev-latest#}" deploy/cr.yaml + -e "/^ logcollector:/,/^ image:/{s#image: .*#image: perconalab/fluentbit:main-logcollector#}" \ + -e "/^ pmm:/,/^ image:/{s#image: .*#image: perconalab/pmm-client:3-dev-latest#}" deploy/cr.yaml $(SED) -i \ -e "s|$(IMAGE_MONGOD80)|perconalab/percona-server-mongodb-operator:main-mongod8.0|g" \ -e "s|$(IMAGE_BACKUP)|perconalab/percona-server-mongodb-operator:main-backup|g" \ -e "s|$(IMAGE_OPERATOR)|perconalab/percona-server-mongodb-operator:main|g" \ + -e "s|$(IMAGE_LOGCOLLECTOR)|perconalab/fluentbit:main-logcollector|g" \ pkg/controller/perconaservermongodb/testdata/reconcile-statefulset/*.yaml $(SED) -i "s|cr.Spec.InitImage = \".*\"|cr.Spec.InitImage = \"perconalab/percona-server-mongodb-operator:main\"|g" pkg/controller/perconaservermongodb/suite_test.go diff --git a/config/crd/patches/versionlabel_in_psmdb.yaml b/config/crd/patches/versionlabel_in_psmdb.yaml index 8f50abe104..aeeae3d176 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.21.0 + app.kubernetes.io/version: v1.22.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 8f27298341..37c431d4b2 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.21.0 + app.kubernetes.io/version: v1.22.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 7a1dec8877..78c6065d55 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.21.0 + app.kubernetes.io/version: v1.22.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 b45bafc6f5..6557ae6ca1 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.21.0 + app.kubernetes.io/version: v1.22.0 name: perconaservermongodbbackups.psmdb.percona.com spec: group: psmdb.percona.com @@ -238,7 +238,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.21.0 + app.kubernetes.io/version: v1.22.0 name: perconaservermongodbrestores.psmdb.percona.com spec: group: psmdb.percona.com @@ -479,7 +479,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.21.0 + app.kubernetes.io/version: v1.22.0 name: perconaservermongodbs.psmdb.percona.com spec: group: psmdb.percona.com diff --git a/deploy/cr-minimal.yaml b/deploy/cr-minimal.yaml index 65245366f9..ef5558e90c 100644 --- a/deploy/cr-minimal.yaml +++ b/deploy/cr-minimal.yaml @@ -3,7 +3,7 @@ kind: PerconaServerMongoDB metadata: name: minimal-cluster spec: - crVersion: 1.21.0 + crVersion: 1.22.0 image: perconalab/percona-server-mongodb-operator:main-mongod8.0 unsafeFlags: replsetSize: true diff --git a/deploy/cr.yaml b/deploy/cr.yaml index da222e71cf..f40f032287 100644 --- a/deploy/cr.yaml +++ b/deploy/cr.yaml @@ -14,7 +14,7 @@ spec: # unmanaged: false # enableVolumeExpansion: false # enableExternalVolumeAutoscaling: false - crVersion: 1.21.0 + crVersion: 1.22.0 image: perconalab/percona-server-mongodb-operator:main-mongod8.0 imagePullPolicy: Always # tls: @@ -60,7 +60,7 @@ spec: # sse: my-cluster-name-sse pmm: enabled: false - image: perconalab/pmm-client:dev-latest + image: perconalab/pmm-client:3-dev-latest serverHost: monitoring-service # containerSecurityContext: {} # customClusterName: mongo-cluster diff --git a/deploy/crd.yaml b/deploy/crd.yaml index 22c2882ba9..a2fd13cfc0 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.21.0 + app.kubernetes.io/version: v1.22.0 name: perconaservermongodbbackups.psmdb.percona.com spec: group: psmdb.percona.com @@ -238,7 +238,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.21.0 + app.kubernetes.io/version: v1.22.0 name: perconaservermongodbrestores.psmdb.percona.com spec: group: psmdb.percona.com @@ -479,7 +479,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.21.0 + app.kubernetes.io/version: v1.22.0 name: perconaservermongodbs.psmdb.percona.com spec: group: psmdb.percona.com diff --git a/deploy/cw-bundle.yaml b/deploy/cw-bundle.yaml index 1fa40f9fc8..c4124f8629 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.21.0 + app.kubernetes.io/version: v1.22.0 name: perconaservermongodbbackups.psmdb.percona.com spec: group: psmdb.percona.com @@ -238,7 +238,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.21.0 + app.kubernetes.io/version: v1.22.0 name: perconaservermongodbrestores.psmdb.percona.com spec: group: psmdb.percona.com @@ -479,7 +479,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.21.0 + app.kubernetes.io/version: v1.22.0 name: perconaservermongodbs.psmdb.percona.com spec: group: psmdb.percona.com diff --git a/e2e-tests/default-cr/compare/statefulset_my-cluster-name-cfg-oc.yml b/e2e-tests/default-cr/compare/statefulset_my-cluster-name-cfg-oc.yml index b660a06c1c..d5a540ddef 100644 --- a/e2e-tests/default-cr/compare/statefulset_my-cluster-name-cfg-oc.yml +++ b/e2e-tests/default-cr/compare/statefulset_my-cluster-name-cfg-oc.yml @@ -112,11 +112,11 @@ spec: timeoutSeconds: 2 resources: limits: - cpu: 300m - memory: 500M + cpu: 600m + memory: 1Gi requests: cpu: 300m - memory: 500M + memory: 1Gi securityContext: runAsNonRoot: true terminationMessagePath: /dev/termination-log @@ -267,11 +267,11 @@ spec: name: mongo-init resources: limits: - cpu: 300m - memory: 500M + cpu: 600m + memory: 1Gi requests: cpu: 300m - memory: 500M + memory: 1Gi terminationMessagePath: /dev/termination-log terminationMessagePolicy: File volumeMounts: diff --git a/e2e-tests/default-cr/compare/statefulset_my-cluster-name-rs0-oc.yml b/e2e-tests/default-cr/compare/statefulset_my-cluster-name-rs0-oc.yml index 6a69cb3b3e..8ccf642d3d 100644 --- a/e2e-tests/default-cr/compare/statefulset_my-cluster-name-rs0-oc.yml +++ b/e2e-tests/default-cr/compare/statefulset_my-cluster-name-rs0-oc.yml @@ -112,11 +112,11 @@ spec: timeoutSeconds: 2 resources: limits: - cpu: 300m - memory: 500M + cpu: 600m + memory: 1Gi requests: cpu: 300m - memory: 500M + memory: 1Gi securityContext: runAsNonRoot: true terminationMessagePath: /dev/termination-log @@ -238,13 +238,13 @@ spec: valueFrom: secretKeyRef: key: MONGODB_CLUSTER_ADMIN_USER_ESCAPED - name: internal-another-name-users + name: internal-my-cluster-name-users optional: false - name: MONGODB_PASSWORD valueFrom: secretKeyRef: key: MONGODB_CLUSTER_ADMIN_PASSWORD_ESCAPED - name: internal-another-name-users + name: internal-my-cluster-name-users optional: false imagePullPolicy: IfNotPresent name: logrotate @@ -267,11 +267,11 @@ spec: name: mongo-init resources: limits: - cpu: 300m - memory: 500M + cpu: 600m + memory: 1Gi requests: cpu: 300m - memory: 500M + memory: 1Gi terminationMessagePath: /dev/termination-log terminationMessagePolicy: File volumeMounts: diff --git a/e2e-tests/demand-backup-if-unhealthy/run b/e2e-tests/demand-backup-if-unhealthy/run index 471dc5237e..c71c813a95 100755 --- a/e2e-tests/demand-backup-if-unhealthy/run +++ b/e2e-tests/demand-backup-if-unhealthy/run @@ -146,7 +146,7 @@ wait_for_cluster_state "$cluster" "initializing|error" backup_name_minio="backup-minio-$type" run_backup "minio" "$backup_name_minio" "$type" -wait_backup $backup_name_minio running +#wait_backup $backup_name_minio running #disabling this check temporarily as backup can be very fast in some platforms verify_sts_not_ready wait_for_cluster_state "$cluster" "initializing|error" diff --git a/e2e-tests/demand-backup-physical-sharded-aws/compare/statefulset_some-name-rs0_restore_sharded-oc.yml b/e2e-tests/demand-backup-physical-sharded-aws/compare/statefulset_some-name-rs0_restore_sharded-oc.yml index ec2dec368d..29fe96a7a8 100644 --- a/e2e-tests/demand-backup-physical-sharded-aws/compare/statefulset_some-name-rs0_restore_sharded-oc.yml +++ b/e2e-tests/demand-backup-physical-sharded-aws/compare/statefulset_some-name-rs0_restore_sharded-oc.yml @@ -84,13 +84,17 @@ spec: value: "true" - name: PBM_AGENT_SIDECAR_SLEEP value: "5" + - name: PBM_AGENT_TLS_ENABLED + value: "true" + - name: PBM_MONGODB_PORT + value: "27017" - name: POD_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.name - name: PBM_MONGODB_URI - value: mongodb://$(PBM_AGENT_MONGODB_USERNAME):$(PBM_AGENT_MONGODB_PASSWORD)@$(POD_NAME) + value: mongodb://$(PBM_AGENT_MONGODB_USERNAME):$(PBM_AGENT_MONGODB_PASSWORD)@localhost:$(PBM_MONGODB_PORT)/?tls=true&tlsCertificateKeyFile=/tmp/tls.pem&tlsCAFile=/etc/mongodb-ssl/ca.crt&tlsInsecure=true envFrom: - secretRef: name: internal-some-name-users diff --git a/e2e-tests/functions b/e2e-tests/functions index 2197d97aa0..696ad123c8 100755 --- a/e2e-tests/functions +++ b/e2e-tests/functions @@ -15,9 +15,9 @@ SKIP_BACKUPS_TO_AWS_GCP_AZURE=${SKIP_BACKUPS_TO_AWS_GCP_AZURE:-1} PMM_SERVER_VER=${PMM_SERVER_VER:-"9.9.9"} IMAGE_PMM_CLIENT=${IMAGE_PMM_CLIENT:-"percona/pmm-client:2.44.1-1"} IMAGE_PMM_SERVER=${IMAGE_PMM_SERVER:-"perconalab/pmm-server:dev-latest"} -IMAGE_PMM3_CLIENT=${IMAGE_PMM3_CLIENT:-"perconalab/pmm-client:3.1.0"} -IMAGE_PMM3_SERVER=${IMAGE_PMM3_SERVER:-"perconalab/pmm-server:3.1.0"} -CERT_MANAGER_VER="1.17.2" +IMAGE_PMM3_CLIENT=${IMAGE_PMM3_CLIENT:-"perconalab/pmm-client:3.4.1"} +IMAGE_PMM3_SERVER=${IMAGE_PMM3_SERVER:-"perconalab/pmm-server:3.4.1"} +CERT_MANAGER_VER="1.18.2" MINIO_VER="5.4.0" CHAOS_MESH_VER="2.7.1" UPDATE_COMPARE_FILES=${UPDATE_COMPARE_FILES:-0} diff --git a/e2e-tests/ignore-labels-annotations/run b/e2e-tests/ignore-labels-annotations/run index ffda3d1151..6a338966b2 100755 --- a/e2e-tests/ignore-labels-annotations/run +++ b/e2e-tests/ignore-labels-annotations/run @@ -180,3 +180,5 @@ check_service "cfg" check_service "mongos" destroy "$namespace" + +desc 'test passed' diff --git a/e2e-tests/init-deploy/compare/backup-80.json b/e2e-tests/init-deploy/compare/backup-80.json index 2ddb43253c..3c12f69cfa 100644 --- a/e2e-tests/init-deploy/compare/backup-80.json +++ b/e2e-tests/init-deploy/compare/backup-80.json @@ -449,6 +449,7 @@ "cluster": true }, "actions": [ + "listClusterCatalog", "allCollectionStats", "appendOplogNote", "bypassWriteBlockingMode", diff --git a/e2e-tests/init-deploy/compare/clusterAdmin-80.json b/e2e-tests/init-deploy/compare/clusterAdmin-80.json index 161ad78cc8..ebf737377c 100644 --- a/e2e-tests/init-deploy/compare/clusterAdmin-80.json +++ b/e2e-tests/init-deploy/compare/clusterAdmin-80.json @@ -260,6 +260,7 @@ }, "actions": [ "addShard", + "listClusterCatalog", "allCollectionStats", "appendOplogNote", "applicationMessage", diff --git a/e2e-tests/init-deploy/compare/clusterMonitor-80.json b/e2e-tests/init-deploy/compare/clusterMonitor-80.json index c9677a2387..1ea0a28a71 100644 --- a/e2e-tests/init-deploy/compare/clusterMonitor-80.json +++ b/e2e-tests/init-deploy/compare/clusterMonitor-80.json @@ -198,6 +198,7 @@ "cluster": true }, "actions": [ + "listClusterCatalog", "allCollectionStats", "connPoolStats", "getDefaultRWConcern", diff --git a/e2e-tests/monitoring-2-0/run b/e2e-tests/monitoring-2-0/run index 5ced482206..968ceeb81f 100755 --- a/e2e-tests/monitoring-2-0/run +++ b/e2e-tests/monitoring-2-0/run @@ -43,12 +43,12 @@ deploy_cert_manager desc 'install PMM Server' deploy_pmm_server -sleep 20 +sleep 40 until kubectl_bin exec monitoring-0 -- bash -c "ls -l /proc/*/exe 2>/dev/null| grep postgres >/dev/null"; do echo "Retry $retry" sleep 5 let retry+=1 - if [ $retry -ge 20 ]; then + if [ $retry -ge 30 ]; then echo "Max retry count $retry reached. Pmm-server can't start" exit 1 fi diff --git a/e2e-tests/non-voting-and-hidden/compare/statefulset_some-name-rs0-hidden-oc.yml b/e2e-tests/non-voting-and-hidden/compare/statefulset_some-name-rs0-hidden-oc.yml new file mode 100644 index 0000000000..b198a48f3d --- /dev/null +++ b/e2e-tests/non-voting-and-hidden/compare/statefulset_some-name-rs0-hidden-oc.yml @@ -0,0 +1,272 @@ +apiVersion: apps/v1 +kind: StatefulSet +metadata: + annotations: {} + generation: 1 + labels: + app.kubernetes.io/component: hidden + app.kubernetes.io/instance: some-name + app.kubernetes.io/managed-by: percona-server-mongodb-operator + app.kubernetes.io/name: percona-server-mongodb + app.kubernetes.io/part-of: percona-server-mongodb + app.kubernetes.io/replset: rs0 + name: some-name-rs0-hidden + ownerReferences: + - controller: true + kind: PerconaServerMongoDB + name: some-name +spec: + podManagementPolicy: OrderedReady + replicas: 2 + revisionHistoryLimit: 10 + selector: + matchLabels: + app.kubernetes.io/component: hidden + app.kubernetes.io/instance: some-name + app.kubernetes.io/managed-by: percona-server-mongodb-operator + app.kubernetes.io/name: percona-server-mongodb + app.kubernetes.io/part-of: percona-server-mongodb + app.kubernetes.io/replset: rs0 + serviceName: some-name-rs0 + template: + metadata: + annotations: {} + labels: + app.kubernetes.io/component: hidden + app.kubernetes.io/instance: some-name + app.kubernetes.io/managed-by: percona-server-mongodb-operator + app.kubernetes.io/name: percona-server-mongodb + app.kubernetes.io/part-of: percona-server-mongodb + app.kubernetes.io/replset: rs0 + spec: + affinity: + podAntiAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + - labelSelector: + matchLabels: + app.kubernetes.io/component: hidden + app.kubernetes.io/instance: some-name + app.kubernetes.io/managed-by: percona-server-mongodb-operator + app.kubernetes.io/name: percona-server-mongodb + app.kubernetes.io/part-of: percona-server-mongodb + app.kubernetes.io/replset: rs0 + topologyKey: kubernetes.io/hostname + containers: + - args: + - --bind_ip_all + - --auth + - --dbpath=/data/db + - --port=27017 + - --replSet=rs0 + - --storageEngine=wiredTiger + - --relaxPermChecks + - --sslAllowInvalidCertificates + - --clusterAuthMode=x509 + - --tlsMode=preferTLS + - --enableEncryption + - --encryptionKeyFile=/etc/mongodb-encryption/encryption-key + - --wiredTigerCacheSizeGB=0.25 + - --wiredTigerIndexPrefixCompression=true + - --quiet + command: + - /opt/percona/ps-entry.sh + env: + - name: SERVICE_NAME + value: some-name + - name: MONGODB_PORT + value: "27017" + - name: MONGODB_REPLSET + value: rs0 + envFrom: + - secretRef: + name: internal-some-name-users + optional: false + imagePullPolicy: Always + livenessProbe: + exec: + command: + - /opt/percona/mongodb-healthcheck + - k8s + - liveness + - --ssl + - --sslInsecure + - --sslCAFile + - /etc/mongodb-ssl/ca.crt + - --sslPEMKeyFile + - /tmp/tls.pem + - --startupDelaySeconds + - "7200" + failureThreshold: 4 + initialDelaySeconds: 60 + periodSeconds: 30 + successThreshold: 1 + timeoutSeconds: 10 + name: mongod-hidden + ports: + - containerPort: 27017 + name: mongodb + protocol: TCP + readinessProbe: + exec: + command: + - /opt/percona/mongodb-healthcheck + - k8s + - readiness + - --component + - mongod + failureThreshold: 8 + initialDelaySeconds: 10 + periodSeconds: 3 + successThreshold: 1 + timeoutSeconds: 2 + resources: + limits: + cpu: 300m + memory: 500M + requests: + cpu: 300m + memory: 500M + securityContext: + runAsNonRoot: true + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + volumeMounts: + - mountPath: /data/db + name: mongod-data + - mountPath: /etc/mongodb-secrets + name: some-name-mongodb-keyfile + readOnly: true + - mountPath: /etc/mongodb-ssl + name: ssl + readOnly: true + - mountPath: /etc/mongodb-ssl-internal + name: ssl-internal + readOnly: true + - mountPath: /opt/percona + name: bin + - mountPath: /.mongodb + name: mongosh + - mountPath: /etc/mongodb-encryption + name: some-name-mongodb-encryption-key + readOnly: true + - mountPath: /etc/users-secret + name: users-secret-file + workingDir: /data/db + - args: + - pbm-agent-entrypoint + command: + - /opt/percona/pbm-entry.sh + env: + - name: PBM_AGENT_MONGODB_USERNAME + valueFrom: + secretKeyRef: + key: MONGODB_BACKUP_USER_ESCAPED + name: internal-some-name-users + optional: false + - name: PBM_AGENT_MONGODB_PASSWORD + valueFrom: + secretKeyRef: + key: MONGODB_BACKUP_PASSWORD_ESCAPED + name: internal-some-name-users + optional: false + - name: PBM_MONGODB_REPLSET + value: rs0 + - name: PBM_MONGODB_PORT + value: "27017" + - name: PBM_AGENT_SIDECAR + value: "true" + - name: PBM_AGENT_SIDECAR_SLEEP + value: "5" + - name: POD_NAME + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: metadata.name + - name: PBM_MONGODB_URI + value: mongodb://$(PBM_AGENT_MONGODB_USERNAME):$(PBM_AGENT_MONGODB_PASSWORD)@localhost:$(PBM_MONGODB_PORT)/?tls=true&tlsCertificateKeyFile=/tmp/tls.pem&tlsCAFile=/etc/mongodb-ssl/ca.crt&tlsInsecure=true + - name: PBM_AGENT_TLS_ENABLED + value: "true" + imagePullPolicy: Always + name: backup-agent + resources: {} + securityContext: + runAsNonRoot: true + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + volumeMounts: + - mountPath: /etc/mongodb-ssl + name: ssl + readOnly: true + - mountPath: /opt/percona + name: bin + readOnly: true + - mountPath: /data/db + name: mongod-data + dnsPolicy: ClusterFirst + initContainers: + - command: + - /init-entrypoint.sh + imagePullPolicy: Always + name: mongo-init + resources: + limits: + cpu: 300m + memory: 500M + requests: + cpu: 300m + memory: 500M + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + volumeMounts: + - mountPath: /data/db + name: mongod-data + - mountPath: /opt/percona + name: bin + restartPolicy: Always + schedulerName: default-scheduler + securityContext: {} + serviceAccount: default + serviceAccountName: default + terminationGracePeriodSeconds: 60 + volumes: + - name: some-name-mongodb-keyfile + secret: + defaultMode: 288 + optional: false + secretName: some-name-mongodb-keyfile + - emptyDir: {} + name: bin + - emptyDir: {} + name: mongosh + - name: some-name-mongodb-encryption-key + secret: + defaultMode: 288 + optional: false + secretName: some-name-mongodb-encryption-key + - name: ssl + secret: + defaultMode: 288 + optional: false + secretName: some-name-ssl + - name: ssl-internal + secret: + defaultMode: 288 + optional: true + secretName: some-name-ssl-internal + - name: users-secret-file + secret: + defaultMode: 420 + secretName: internal-some-name-users + updateStrategy: + type: OnDelete + volumeClaimTemplates: + - metadata: + name: mongod-data + spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 3Gi + status: + phase: Pending diff --git a/e2e-tests/non-voting-and-hidden/compare/statefulset_some-name-rs0-nv-oc.yml b/e2e-tests/non-voting-and-hidden/compare/statefulset_some-name-rs0-nv-oc.yml index bde58f21a0..c303bc04b1 100644 --- a/e2e-tests/non-voting-and-hidden/compare/statefulset_some-name-rs0-nv-oc.yml +++ b/e2e-tests/non-voting-and-hidden/compare/statefulset_some-name-rs0-nv-oc.yml @@ -5,35 +5,35 @@ metadata: generation: 1 labels: app.kubernetes.io/component: nonVoting - app.kubernetes.io/instance: nonvoting + app.kubernetes.io/instance: some-name app.kubernetes.io/managed-by: percona-server-mongodb-operator app.kubernetes.io/name: percona-server-mongodb app.kubernetes.io/part-of: percona-server-mongodb app.kubernetes.io/replset: rs0 - name: nonvoting-rs0-nv + name: some-name-rs0-nv ownerReferences: - controller: true kind: PerconaServerMongoDB - name: nonvoting + name: some-name spec: podManagementPolicy: OrderedReady - replicas: 3 + replicas: 1 revisionHistoryLimit: 10 selector: matchLabels: app.kubernetes.io/component: nonVoting - app.kubernetes.io/instance: nonvoting + app.kubernetes.io/instance: some-name app.kubernetes.io/managed-by: percona-server-mongodb-operator app.kubernetes.io/name: percona-server-mongodb app.kubernetes.io/part-of: percona-server-mongodb app.kubernetes.io/replset: rs0 - serviceName: nonvoting-rs0 + serviceName: some-name-rs0 template: metadata: annotations: {} labels: app.kubernetes.io/component: nonVoting - app.kubernetes.io/instance: nonvoting + app.kubernetes.io/instance: some-name app.kubernetes.io/managed-by: percona-server-mongodb-operator app.kubernetes.io/name: percona-server-mongodb app.kubernetes.io/part-of: percona-server-mongodb @@ -72,14 +72,14 @@ spec: - /opt/percona/ps-entry.sh env: - name: SERVICE_NAME - value: nonvoting + value: some-name - name: MONGODB_PORT value: "27017" - name: MONGODB_REPLSET value: rs0 envFrom: - secretRef: - name: internal-nonvoting-users + name: internal-some-name-users optional: false imagePullPolicy: Always livenessProbe: @@ -134,7 +134,7 @@ spec: - mountPath: /data/db name: mongod-data - mountPath: /etc/mongodb-secrets - name: nonvoting-mongodb-keyfile + name: some-name-mongodb-keyfile readOnly: true - mountPath: /etc/mongodb-ssl name: ssl @@ -147,11 +147,61 @@ spec: - mountPath: /.mongodb name: mongosh - mountPath: /etc/mongodb-encryption - name: nonvoting-mongodb-encryption-key + name: some-name-mongodb-encryption-key readOnly: true - mountPath: /etc/users-secret name: users-secret-file workingDir: /data/db + - args: + - pbm-agent-entrypoint + command: + - /opt/percona/pbm-entry.sh + env: + - name: PBM_AGENT_MONGODB_USERNAME + valueFrom: + secretKeyRef: + key: MONGODB_BACKUP_USER_ESCAPED + name: internal-some-name-users + optional: false + - name: PBM_AGENT_MONGODB_PASSWORD + valueFrom: + secretKeyRef: + key: MONGODB_BACKUP_PASSWORD_ESCAPED + name: internal-some-name-users + optional: false + - name: PBM_MONGODB_REPLSET + value: rs0 + - name: PBM_MONGODB_PORT + value: "27017" + - name: PBM_AGENT_SIDECAR + value: "true" + - name: PBM_AGENT_SIDECAR_SLEEP + value: "5" + - name: POD_NAME + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: metadata.name + - name: PBM_MONGODB_URI + value: mongodb://$(PBM_AGENT_MONGODB_USERNAME):$(PBM_AGENT_MONGODB_PASSWORD)@localhost:$(PBM_MONGODB_PORT)/?tls=true&tlsCertificateKeyFile=/tmp/tls.pem&tlsCAFile=/etc/mongodb-ssl/ca.crt&tlsInsecure=true + - name: PBM_AGENT_TLS_ENABLED + value: "true" + imagePullPolicy: Always + name: backup-agent + resources: {} + securityContext: + runAsNonRoot: true + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + volumeMounts: + - mountPath: /etc/mongodb-ssl + name: ssl + readOnly: true + - mountPath: /opt/percona + name: bin + readOnly: true + - mountPath: /data/db + name: mongod-data dnsPolicy: ClusterFirst initContainers: - command: @@ -179,34 +229,34 @@ spec: serviceAccountName: default terminationGracePeriodSeconds: 60 volumes: - - name: nonvoting-mongodb-keyfile + - name: some-name-mongodb-keyfile secret: defaultMode: 288 optional: false - secretName: nonvoting-mongodb-keyfile + secretName: some-name-mongodb-keyfile - emptyDir: {} name: bin - emptyDir: {} name: mongosh - - name: nonvoting-mongodb-encryption-key + - name: some-name-mongodb-encryption-key secret: defaultMode: 288 optional: false - secretName: nonvoting-mongodb-encryption-key + secretName: some-name-mongodb-encryption-key - name: ssl secret: defaultMode: 288 optional: false - secretName: nonvoting-ssl + secretName: some-name-ssl - name: ssl-internal secret: defaultMode: 288 optional: true - secretName: nonvoting-ssl-internal + secretName: some-name-ssl-internal - name: users-secret-file secret: defaultMode: 420 - secretName: internal-nonvoting-users + secretName: internal-some-name-users updateStrategy: type: OnDelete volumeClaimTemplates: diff --git a/e2e-tests/non-voting-and-hidden/compare/statefulset_some-name-rs0-oc.yml b/e2e-tests/non-voting-and-hidden/compare/statefulset_some-name-rs0-oc.yml new file mode 100644 index 0000000000..522cfa7235 --- /dev/null +++ b/e2e-tests/non-voting-and-hidden/compare/statefulset_some-name-rs0-oc.yml @@ -0,0 +1,267 @@ +apiVersion: apps/v1 +kind: StatefulSet +metadata: + annotations: {} + generation: 1 + labels: + app.kubernetes.io/component: mongod + app.kubernetes.io/instance: some-name + app.kubernetes.io/managed-by: percona-server-mongodb-operator + app.kubernetes.io/name: percona-server-mongodb + app.kubernetes.io/part-of: percona-server-mongodb + app.kubernetes.io/replset: rs0 + name: some-name-rs0 + ownerReferences: + - controller: true + kind: PerconaServerMongoDB + name: some-name +spec: + podManagementPolicy: OrderedReady + replicas: 3 + revisionHistoryLimit: 10 + selector: + matchLabels: + app.kubernetes.io/component: mongod + app.kubernetes.io/instance: some-name + app.kubernetes.io/managed-by: percona-server-mongodb-operator + app.kubernetes.io/name: percona-server-mongodb + app.kubernetes.io/part-of: percona-server-mongodb + app.kubernetes.io/replset: rs0 + serviceName: some-name-rs0 + template: + metadata: + annotations: {} + labels: + app.kubernetes.io/component: mongod + app.kubernetes.io/instance: some-name + app.kubernetes.io/managed-by: percona-server-mongodb-operator + app.kubernetes.io/name: percona-server-mongodb + app.kubernetes.io/part-of: percona-server-mongodb + app.kubernetes.io/replset: rs0 + spec: + affinity: + podAntiAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + - labelSelector: + matchLabels: + app.kubernetes.io/component: mongod + app.kubernetes.io/instance: some-name + app.kubernetes.io/managed-by: percona-server-mongodb-operator + app.kubernetes.io/name: percona-server-mongodb + app.kubernetes.io/part-of: percona-server-mongodb + app.kubernetes.io/replset: rs0 + topologyKey: kubernetes.io/hostname + containers: + - args: + - --bind_ip_all + - --auth + - --dbpath=/data/db + - --port=27017 + - --replSet=rs0 + - --storageEngine=wiredTiger + - --relaxPermChecks + - --sslAllowInvalidCertificates + - --clusterAuthMode=x509 + - --tlsMode=preferTLS + - --enableEncryption + - --encryptionKeyFile=/etc/mongodb-encryption/encryption-key + - --wiredTigerIndexPrefixCompression=true + - --config=/etc/mongodb-config/mongod.conf + - --quiet + command: + - /opt/percona/ps-entry.sh + env: + - name: SERVICE_NAME + value: some-name + - name: MONGODB_PORT + value: "27017" + - name: MONGODB_REPLSET + value: rs0 + envFrom: + - secretRef: + name: internal-some-name-users + optional: false + imagePullPolicy: Always + livenessProbe: + exec: + command: + - /opt/percona/mongodb-healthcheck + - k8s + - liveness + - --ssl + - --sslInsecure + - --sslCAFile + - /etc/mongodb-ssl/ca.crt + - --sslPEMKeyFile + - /tmp/tls.pem + - --startupDelaySeconds + - "7200" + failureThreshold: 4 + initialDelaySeconds: 60 + periodSeconds: 30 + successThreshold: 1 + timeoutSeconds: 10 + name: mongod + ports: + - containerPort: 27017 + name: mongodb + protocol: TCP + readinessProbe: + exec: + command: + - /opt/percona/mongodb-healthcheck + - k8s + - readiness + - --component + - mongod + failureThreshold: 8 + initialDelaySeconds: 10 + periodSeconds: 3 + successThreshold: 1 + timeoutSeconds: 2 + resources: {} + securityContext: + runAsNonRoot: true + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + volumeMounts: + - mountPath: /data/db + name: mongod-data + - mountPath: /etc/mongodb-secrets + name: some-name-mongodb-keyfile + readOnly: true + - mountPath: /etc/mongodb-ssl + name: ssl + readOnly: true + - mountPath: /etc/mongodb-ssl-internal + name: ssl-internal + readOnly: true + - mountPath: /etc/mongodb-config + name: config + - mountPath: /opt/percona + name: bin + - mountPath: /.mongodb + name: mongosh + - mountPath: /etc/mongodb-encryption + name: some-name-mongodb-encryption-key + readOnly: true + - mountPath: /etc/users-secret + name: users-secret-file + workingDir: /data/db + - args: + - pbm-agent-entrypoint + command: + - /opt/percona/pbm-entry.sh + env: + - name: PBM_AGENT_MONGODB_USERNAME + valueFrom: + secretKeyRef: + key: MONGODB_BACKUP_USER_ESCAPED + name: internal-some-name-users + optional: false + - name: PBM_AGENT_MONGODB_PASSWORD + valueFrom: + secretKeyRef: + key: MONGODB_BACKUP_PASSWORD_ESCAPED + name: internal-some-name-users + optional: false + - name: PBM_MONGODB_REPLSET + value: rs0 + - name: PBM_MONGODB_PORT + value: "27017" + - name: PBM_AGENT_SIDECAR + value: "true" + - name: PBM_AGENT_SIDECAR_SLEEP + value: "5" + - name: POD_NAME + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: metadata.name + - name: PBM_MONGODB_URI + value: mongodb://$(PBM_AGENT_MONGODB_USERNAME):$(PBM_AGENT_MONGODB_PASSWORD)@localhost:$(PBM_MONGODB_PORT)/?tls=true&tlsCertificateKeyFile=/tmp/tls.pem&tlsCAFile=/etc/mongodb-ssl/ca.crt&tlsInsecure=true + - name: PBM_AGENT_TLS_ENABLED + value: "true" + imagePullPolicy: Always + name: backup-agent + resources: {} + securityContext: + runAsNonRoot: true + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + volumeMounts: + - mountPath: /etc/mongodb-ssl + name: ssl + readOnly: true + - mountPath: /opt/percona + name: bin + readOnly: true + - mountPath: /data/db + name: mongod-data + dnsPolicy: ClusterFirst + initContainers: + - command: + - /init-entrypoint.sh + imagePullPolicy: Always + name: mongo-init + resources: {} + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + volumeMounts: + - mountPath: /data/db + name: mongod-data + - mountPath: /opt/percona + name: bin + restartPolicy: Always + schedulerName: default-scheduler + securityContext: {} + serviceAccount: default + serviceAccountName: default + terminationGracePeriodSeconds: 60 + volumes: + - name: some-name-mongodb-keyfile + secret: + defaultMode: 288 + optional: false + secretName: some-name-mongodb-keyfile + - emptyDir: {} + name: bin + - emptyDir: {} + name: mongosh + - configMap: + defaultMode: 420 + name: some-name-rs0-mongod + optional: true + name: config + - name: some-name-mongodb-encryption-key + secret: + defaultMode: 288 + optional: false + secretName: some-name-mongodb-encryption-key + - name: ssl + secret: + defaultMode: 288 + optional: false + secretName: some-name-ssl + - name: ssl-internal + secret: + defaultMode: 288 + optional: true + secretName: some-name-ssl-internal + - name: users-secret-file + secret: + defaultMode: 420 + secretName: internal-some-name-users + updateStrategy: + type: OnDelete + volumeClaimTemplates: + - metadata: + name: mongod-data + spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + status: + phase: Pending diff --git a/e2e-tests/recover-no-primary/run b/e2e-tests/recover-no-primary/run index 2ca5bff53b..f505aac69d 100755 --- a/e2e-tests/recover-no-primary/run +++ b/e2e-tests/recover-no-primary/run @@ -199,4 +199,5 @@ test_exposed_single_replset desc 'testing exposed two replsets sharded cluster' test_exposed_sharded_cluster -destroy ${namespace} \ No newline at end of file +desc 'test passed' +destroy ${namespace} diff --git a/e2e-tests/release_versions b/e2e-tests/release_versions index 462afc0eba..59bbb1220b 100644 --- a/e2e-tests/release_versions +++ b/e2e-tests/release_versions @@ -1,18 +1,19 @@ -IMAGE_OPERATOR=percona/percona-server-mongodb-operator:1.20.1 -IMAGE_MONGOD80=percona/percona-server-mongodb:8.0.8-3 -IMAGE_MONGOD70=percona/percona-server-mongodb:7.0.18-11 -IMAGE_MONGOD60=percona/percona-server-mongodb:6.0.21-18 -IMAGE_BACKUP=percona/percona-backup-mongodb:2.9.1 -IMAGE_PMM_CLIENT=percona/pmm-client:2.44.1 +IMAGE_OPERATOR=percona/percona-server-mongodb-operator:1.21.0 +IMAGE_MONGOD80=percona/percona-server-mongodb:8.0.12-4 +IMAGE_MONGOD70=percona/percona-server-mongodb:7.0.24-13 +IMAGE_MONGOD60=percona/percona-server-mongodb:6.0.25-20 +IMAGE_BACKUP=percona/percona-backup-mongodb:2.11.0 +IMAGE_PMM_CLIENT=percona/pmm-client:2.44.1-1 IMAGE_PMM_SERVER=percona/pmm-server:2.44.1 -IMAGE_PMM3_CLIENT=percona/pmm-client:3.1.0 -IMAGE_PMM3_SERVER=percona/pmm-server:3.1.0 -GKE_MIN=1.30 -GKE_MAX=1.32 -EKS_MIN=1.30 -EKS_MAX=1.32 -AKS_MIN=1.30 -AKS_MAX=1.32 -OPENSHIFT_MIN=4.14.50 -OPENSHIFT_MAX=4.18.10 -MINIKUBE_REL=1.32.0 \ No newline at end of file +IMAGE_PMM3_CLIENT=percona/pmm-client:3.4.1 +IMAGE_PMM3_SERVER=percona/pmm-server:3.4.1 +IMAGE_LOGCOLLECTOR=percona/fluentbit:4.0.1 +GKE_MIN=1.31 +GKE_MAX=1.33 +EKS_MIN=1.31 +EKS_MAX=1.34 +AKS_MIN=1.31 +AKS_MAX=1.33 +OPENSHIFT_MIN=4.16.49 +OPENSHIFT_MAX=4.19.15 +MINIKUBE_REL=1.34.0 \ No newline at end of file diff --git a/e2e-tests/upgrade-consistency-sharded-tls/compare/service_some-name-cfg-1191.yml b/e2e-tests/upgrade-consistency-sharded-tls/compare/service_some-name-cfg-1220.yml similarity index 100% rename from e2e-tests/upgrade-consistency-sharded-tls/compare/service_some-name-cfg-1191.yml rename to e2e-tests/upgrade-consistency-sharded-tls/compare/service_some-name-cfg-1220.yml diff --git a/e2e-tests/upgrade-consistency-sharded-tls/compare/service_some-name-rs0-1191.yml b/e2e-tests/upgrade-consistency-sharded-tls/compare/service_some-name-rs0-1220.yml similarity index 100% rename from e2e-tests/upgrade-consistency-sharded-tls/compare/service_some-name-rs0-1191.yml rename to e2e-tests/upgrade-consistency-sharded-tls/compare/service_some-name-rs0-1220.yml diff --git a/e2e-tests/upgrade-consistency-sharded-tls/compare/statefulset_some-name-cfg-1201-oc.yml b/e2e-tests/upgrade-consistency-sharded-tls/compare/statefulset_some-name-cfg-1201-oc.yml index 9a696a7085..e1b011548f 100644 --- a/e2e-tests/upgrade-consistency-sharded-tls/compare/statefulset_some-name-cfg-1201-oc.yml +++ b/e2e-tests/upgrade-consistency-sharded-tls/compare/statefulset_some-name-cfg-1201-oc.yml @@ -2,7 +2,7 @@ apiVersion: apps/v1 kind: StatefulSet metadata: annotations: {} - generation: 5 + generation: 3 labels: app.kubernetes.io/component: cfg app.kubernetes.io/instance: some-name diff --git a/e2e-tests/upgrade-consistency-sharded-tls/compare/statefulset_some-name-cfg-1201.yml b/e2e-tests/upgrade-consistency-sharded-tls/compare/statefulset_some-name-cfg-1201.yml index 6c10a1135c..a4aceed30f 100644 --- a/e2e-tests/upgrade-consistency-sharded-tls/compare/statefulset_some-name-cfg-1201.yml +++ b/e2e-tests/upgrade-consistency-sharded-tls/compare/statefulset_some-name-cfg-1201.yml @@ -2,7 +2,7 @@ apiVersion: apps/v1 kind: StatefulSet metadata: annotations: {} - generation: 5 + generation: 3 labels: app.kubernetes.io/component: cfg app.kubernetes.io/instance: some-name diff --git a/e2e-tests/upgrade-consistency-sharded-tls/compare/statefulset_some-name-cfg-1210-oc.yml b/e2e-tests/upgrade-consistency-sharded-tls/compare/statefulset_some-name-cfg-1210-oc.yml index b08ad6dbaf..ef620b542f 100644 --- a/e2e-tests/upgrade-consistency-sharded-tls/compare/statefulset_some-name-cfg-1210-oc.yml +++ b/e2e-tests/upgrade-consistency-sharded-tls/compare/statefulset_some-name-cfg-1210-oc.yml @@ -2,7 +2,7 @@ apiVersion: apps/v1 kind: StatefulSet metadata: annotations: {} - generation: 8 + generation: 6 labels: app.kubernetes.io/component: cfg app.kubernetes.io/instance: some-name diff --git a/e2e-tests/upgrade-consistency-sharded-tls/compare/statefulset_some-name-cfg-1210.yml b/e2e-tests/upgrade-consistency-sharded-tls/compare/statefulset_some-name-cfg-1210.yml index 10aebff0f9..0d1abc8bb3 100644 --- a/e2e-tests/upgrade-consistency-sharded-tls/compare/statefulset_some-name-cfg-1210.yml +++ b/e2e-tests/upgrade-consistency-sharded-tls/compare/statefulset_some-name-cfg-1210.yml @@ -2,7 +2,7 @@ apiVersion: apps/v1 kind: StatefulSet metadata: annotations: {} - generation: 8 + generation: 6 labels: app.kubernetes.io/component: cfg app.kubernetes.io/instance: some-name diff --git a/e2e-tests/upgrade-consistency-sharded-tls/compare/statefulset_some-name-cfg-1191-oc.yml b/e2e-tests/upgrade-consistency-sharded-tls/compare/statefulset_some-name-cfg-1220-oc.yml similarity index 98% rename from e2e-tests/upgrade-consistency-sharded-tls/compare/statefulset_some-name-cfg-1191-oc.yml rename to e2e-tests/upgrade-consistency-sharded-tls/compare/statefulset_some-name-cfg-1220-oc.yml index e1b011548f..b08ad6dbaf 100644 --- a/e2e-tests/upgrade-consistency-sharded-tls/compare/statefulset_some-name-cfg-1191-oc.yml +++ b/e2e-tests/upgrade-consistency-sharded-tls/compare/statefulset_some-name-cfg-1220-oc.yml @@ -2,7 +2,7 @@ apiVersion: apps/v1 kind: StatefulSet metadata: annotations: {} - generation: 3 + generation: 8 labels: app.kubernetes.io/component: cfg app.kubernetes.io/instance: some-name @@ -145,6 +145,8 @@ spec: readOnly: true - mountPath: /opt/percona name: bin + - mountPath: /.mongodb + name: mongosh - mountPath: /etc/mongodb-encryption name: some-name-mongodb-encryption-key readOnly: true @@ -185,6 +187,8 @@ spec: secretName: some-name-mongodb-keyfile - emptyDir: {} name: bin + - emptyDir: {} + name: mongosh - name: some-name-mongodb-encryption-key secret: defaultMode: 288 diff --git a/e2e-tests/upgrade-consistency-sharded-tls/compare/statefulset_some-name-cfg-1191.yml b/e2e-tests/upgrade-consistency-sharded-tls/compare/statefulset_some-name-cfg-1220.yml similarity index 98% rename from e2e-tests/upgrade-consistency-sharded-tls/compare/statefulset_some-name-cfg-1191.yml rename to e2e-tests/upgrade-consistency-sharded-tls/compare/statefulset_some-name-cfg-1220.yml index a4aceed30f..10aebff0f9 100644 --- a/e2e-tests/upgrade-consistency-sharded-tls/compare/statefulset_some-name-cfg-1191.yml +++ b/e2e-tests/upgrade-consistency-sharded-tls/compare/statefulset_some-name-cfg-1220.yml @@ -2,7 +2,7 @@ apiVersion: apps/v1 kind: StatefulSet metadata: annotations: {} - generation: 3 + generation: 8 labels: app.kubernetes.io/component: cfg app.kubernetes.io/instance: some-name @@ -146,6 +146,8 @@ spec: readOnly: true - mountPath: /opt/percona name: bin + - mountPath: /.mongodb + name: mongosh - mountPath: /etc/mongodb-encryption name: some-name-mongodb-encryption-key readOnly: true @@ -187,6 +189,8 @@ spec: secretName: some-name-mongodb-keyfile - emptyDir: {} name: bin + - emptyDir: {} + name: mongosh - name: some-name-mongodb-encryption-key secret: defaultMode: 288 diff --git a/e2e-tests/upgrade-consistency-sharded-tls/compare/statefulset_some-name-rs0-1201-oc.yml b/e2e-tests/upgrade-consistency-sharded-tls/compare/statefulset_some-name-rs0-1201-oc.yml index b8c23cd1d6..87ad33b990 100644 --- a/e2e-tests/upgrade-consistency-sharded-tls/compare/statefulset_some-name-rs0-1201-oc.yml +++ b/e2e-tests/upgrade-consistency-sharded-tls/compare/statefulset_some-name-rs0-1201-oc.yml @@ -2,7 +2,7 @@ apiVersion: apps/v1 kind: StatefulSet metadata: annotations: {} - generation: 5 + generation: 3 labels: app.kubernetes.io/component: mongod app.kubernetes.io/instance: some-name diff --git a/e2e-tests/upgrade-consistency-sharded-tls/compare/statefulset_some-name-rs0-1201.yml b/e2e-tests/upgrade-consistency-sharded-tls/compare/statefulset_some-name-rs0-1201.yml index a0ce6a988b..abc93591b5 100644 --- a/e2e-tests/upgrade-consistency-sharded-tls/compare/statefulset_some-name-rs0-1201.yml +++ b/e2e-tests/upgrade-consistency-sharded-tls/compare/statefulset_some-name-rs0-1201.yml @@ -2,7 +2,7 @@ apiVersion: apps/v1 kind: StatefulSet metadata: annotations: {} - generation: 5 + generation: 3 labels: app.kubernetes.io/component: mongod app.kubernetes.io/instance: some-name diff --git a/e2e-tests/upgrade-consistency-sharded-tls/compare/statefulset_some-name-rs0-1210-oc.yml b/e2e-tests/upgrade-consistency-sharded-tls/compare/statefulset_some-name-rs0-1210-oc.yml index 3ae9bc2a1a..1c4f3fb9d0 100644 --- a/e2e-tests/upgrade-consistency-sharded-tls/compare/statefulset_some-name-rs0-1210-oc.yml +++ b/e2e-tests/upgrade-consistency-sharded-tls/compare/statefulset_some-name-rs0-1210-oc.yml @@ -2,7 +2,7 @@ apiVersion: apps/v1 kind: StatefulSet metadata: annotations: {} - generation: 8 + generation: 6 labels: app.kubernetes.io/component: mongod app.kubernetes.io/instance: some-name diff --git a/e2e-tests/upgrade-consistency-sharded-tls/compare/statefulset_some-name-rs0-1210.yml b/e2e-tests/upgrade-consistency-sharded-tls/compare/statefulset_some-name-rs0-1210.yml index 162a732089..37e17c32d2 100644 --- a/e2e-tests/upgrade-consistency-sharded-tls/compare/statefulset_some-name-rs0-1210.yml +++ b/e2e-tests/upgrade-consistency-sharded-tls/compare/statefulset_some-name-rs0-1210.yml @@ -2,7 +2,7 @@ apiVersion: apps/v1 kind: StatefulSet metadata: annotations: {} - generation: 8 + generation: 6 labels: app.kubernetes.io/component: mongod app.kubernetes.io/instance: some-name diff --git a/e2e-tests/upgrade-consistency-sharded-tls/compare/statefulset_some-name-rs0-1191-oc.yml b/e2e-tests/upgrade-consistency-sharded-tls/compare/statefulset_some-name-rs0-1220-oc.yml similarity index 98% rename from e2e-tests/upgrade-consistency-sharded-tls/compare/statefulset_some-name-rs0-1191-oc.yml rename to e2e-tests/upgrade-consistency-sharded-tls/compare/statefulset_some-name-rs0-1220-oc.yml index 87ad33b990..3ae9bc2a1a 100644 --- a/e2e-tests/upgrade-consistency-sharded-tls/compare/statefulset_some-name-rs0-1191-oc.yml +++ b/e2e-tests/upgrade-consistency-sharded-tls/compare/statefulset_some-name-rs0-1220-oc.yml @@ -2,7 +2,7 @@ apiVersion: apps/v1 kind: StatefulSet metadata: annotations: {} - generation: 3 + generation: 8 labels: app.kubernetes.io/component: mongod app.kubernetes.io/instance: some-name @@ -148,6 +148,8 @@ spec: name: config - mountPath: /opt/percona name: bin + - mountPath: /.mongodb + name: mongosh - mountPath: /etc/mongodb-encryption name: some-name-mongodb-encryption-key readOnly: true @@ -188,6 +190,8 @@ spec: secretName: some-name-mongodb-keyfile - emptyDir: {} name: bin + - emptyDir: {} + name: mongosh - configMap: defaultMode: 420 name: some-name-rs0-mongod diff --git a/e2e-tests/upgrade-consistency-sharded-tls/compare/statefulset_some-name-rs0-1191.yml b/e2e-tests/upgrade-consistency-sharded-tls/compare/statefulset_some-name-rs0-1220.yml similarity index 98% rename from e2e-tests/upgrade-consistency-sharded-tls/compare/statefulset_some-name-rs0-1191.yml rename to e2e-tests/upgrade-consistency-sharded-tls/compare/statefulset_some-name-rs0-1220.yml index abc93591b5..162a732089 100644 --- a/e2e-tests/upgrade-consistency-sharded-tls/compare/statefulset_some-name-rs0-1191.yml +++ b/e2e-tests/upgrade-consistency-sharded-tls/compare/statefulset_some-name-rs0-1220.yml @@ -2,7 +2,7 @@ apiVersion: apps/v1 kind: StatefulSet metadata: annotations: {} - generation: 3 + generation: 8 labels: app.kubernetes.io/component: mongod app.kubernetes.io/instance: some-name @@ -149,6 +149,8 @@ spec: name: config - mountPath: /opt/percona name: bin + - mountPath: /.mongodb + name: mongosh - mountPath: /etc/mongodb-encryption name: some-name-mongodb-encryption-key readOnly: true @@ -190,6 +192,8 @@ spec: secretName: some-name-mongodb-keyfile - emptyDir: {} name: bin + - emptyDir: {} + name: mongosh - configMap: defaultMode: 420 name: some-name-rs0-mongod diff --git a/e2e-tests/upgrade-consistency-sharded-tls/conf/some-name.yml b/e2e-tests/upgrade-consistency-sharded-tls/conf/some-name.yml index 0c173f19eb..d930811603 100644 --- a/e2e-tests/upgrade-consistency-sharded-tls/conf/some-name.yml +++ b/e2e-tests/upgrade-consistency-sharded-tls/conf/some-name.yml @@ -6,7 +6,7 @@ metadata: - percona.com/delete-psmdb-pods-in-order - percona.com/delete-psmdb-pvc spec: - crVersion: 1.19.1 + crVersion: 1.20.1 #platform: openshift image: imagePullPolicy: Always diff --git a/e2e-tests/upgrade-consistency-sharded-tls/run b/e2e-tests/upgrade-consistency-sharded-tls/run index 87e99905d7..d6e648c7e4 100755 --- a/e2e-tests/upgrade-consistency-sharded-tls/run +++ b/e2e-tests/upgrade-consistency-sharded-tls/run @@ -24,7 +24,7 @@ main() { kubectl_bin apply -f "$conf_dir/client_with_tls.yml" deploy_cmctl - desc "create first PSMDB cluster 1.19.1 $CLUSTER" + desc "create first PSMDB cluster 1.20.1 $CLUSTER" apply_cluster "$test_dir/conf/${CLUSTER}.yml" desc 'check if Pod started' @@ -51,43 +51,43 @@ main() { compare_generation "3" "statefulset" "${CLUSTER}-cfg" desc 'check if service and statefulset created with expected config' - compare_kubectl service/${CLUSTER}-rs0 "-1191" - compare_kubectl service/${CLUSTER}-cfg "-1191" - compare_kubectl statefulset/${CLUSTER}-rs0 "-1191" - compare_kubectl statefulset/${CLUSTER}-cfg "-1191" + compare_kubectl service/${CLUSTER}-rs0 "-1201" + compare_kubectl service/${CLUSTER}-cfg "-1201" + compare_kubectl statefulset/${CLUSTER}-rs0 "-1201" + compare_kubectl statefulset/${CLUSTER}-cfg "-1201" - desc 'test 1.20.1' + desc 'test 1.21.0' kubectl_bin patch psmdb "${CLUSTER}" --type=merge --patch '{ - "spec": {"crVersion":"1.20.1"} + "spec": {"crVersion":"1.21.0"} }' # Wait for at least one reconciliation sleep 20 desc 'check if Pod started' wait_cluster - compare_generation "3" "statefulset" "${CLUSTER}-rs0" - compare_generation "3" "statefulset" "${CLUSTER}-cfg" + compare_generation "4" "statefulset" "${CLUSTER}-rs0" + compare_generation "4" "statefulset" "${CLUSTER}-cfg" renew_certificate "some-name-ssl" sleep 20 wait_cluster - compare_generation "4" "statefulset" "${CLUSTER}-rs0" - compare_generation "4" "statefulset" "${CLUSTER}-cfg" + compare_generation "5" "statefulset" "${CLUSTER}-rs0" + compare_generation "5" "statefulset" "${CLUSTER}-cfg" renew_certificate "some-name-ssl-internal" sleep 20 wait_cluster - compare_generation "5" "statefulset" "${CLUSTER}-rs0" - compare_generation "5" "statefulset" "${CLUSTER}-cfg" + compare_generation "6" "statefulset" "${CLUSTER}-rs0" + compare_generation "6" "statefulset" "${CLUSTER}-cfg" desc 'check if service and statefulset created with expected config' - compare_kubectl service/${CLUSTER}-rs0 "-1201" - compare_kubectl service/${CLUSTER}-cfg "-1201" - compare_kubectl statefulset/${CLUSTER}-rs0 "-1201" - compare_kubectl statefulset/${CLUSTER}-cfg "-1201" + compare_kubectl service/${CLUSTER}-rs0 "-1210" + compare_kubectl service/${CLUSTER}-cfg "-1210" + compare_kubectl statefulset/${CLUSTER}-rs0 "-1210" + compare_kubectl statefulset/${CLUSTER}-cfg "-1210" - desc 'test 1.21.0' + desc 'test 1.22.0' kubectl_bin patch psmdb "${CLUSTER}" --type=merge --patch '{ - "spec": {"crVersion":"1.21.0"} + "spec": {"crVersion":"1.22.0"} }' # Wait for at least one reconciliation sleep 20 @@ -109,10 +109,10 @@ main() { compare_generation "8" "statefulset" "${CLUSTER}-cfg" desc 'check if service and statefulset created with expected config' - compare_kubectl service/${CLUSTER}-rs0 "-1210" - compare_kubectl service/${CLUSTER}-cfg "-1210" - compare_kubectl statefulset/${CLUSTER}-rs0 "-1210" - compare_kubectl statefulset/${CLUSTER}-cfg "-1210" + compare_kubectl service/${CLUSTER}-rs0 "-1220" + compare_kubectl service/${CLUSTER}-cfg "-1220" + compare_kubectl statefulset/${CLUSTER}-rs0 "-1220" + compare_kubectl statefulset/${CLUSTER}-cfg "-1220" destroy "$namespace" diff --git a/e2e-tests/upgrade-consistency/compare/service_some-name-rs0-1191.yml b/e2e-tests/upgrade-consistency/compare/service_some-name-rs0-1220.yml similarity index 100% rename from e2e-tests/upgrade-consistency/compare/service_some-name-rs0-1191.yml rename to e2e-tests/upgrade-consistency/compare/service_some-name-rs0-1220.yml diff --git a/e2e-tests/upgrade-consistency/compare/statefulset_some-name-rs0-1191-oc.yml b/e2e-tests/upgrade-consistency/compare/statefulset_some-name-rs0-1220-oc.yml similarity index 98% rename from e2e-tests/upgrade-consistency/compare/statefulset_some-name-rs0-1191-oc.yml rename to e2e-tests/upgrade-consistency/compare/statefulset_some-name-rs0-1220-oc.yml index 3de431d23e..1810d594f5 100644 --- a/e2e-tests/upgrade-consistency/compare/statefulset_some-name-rs0-1191-oc.yml +++ b/e2e-tests/upgrade-consistency/compare/statefulset_some-name-rs0-1220-oc.yml @@ -2,7 +2,7 @@ apiVersion: apps/v1 kind: StatefulSet metadata: annotations: {} - generation: 1 + generation: 2 labels: app.kubernetes.io/component: mongod app.kubernetes.io/instance: some-name @@ -135,6 +135,8 @@ spec: name: config - mountPath: /opt/percona name: bin + - mountPath: /.mongodb + name: mongosh - mountPath: /etc/mongodb-encryption name: some-name-mongodb-encryption-key readOnly: true @@ -175,6 +177,8 @@ spec: secretName: some-name-mongodb-keyfile - emptyDir: {} name: bin + - emptyDir: {} + name: mongosh - configMap: defaultMode: 420 name: some-name-rs0-mongod diff --git a/e2e-tests/upgrade-consistency/compare/statefulset_some-name-rs0-1191.yml b/e2e-tests/upgrade-consistency/compare/statefulset_some-name-rs0-1220.yml similarity index 98% rename from e2e-tests/upgrade-consistency/compare/statefulset_some-name-rs0-1191.yml rename to e2e-tests/upgrade-consistency/compare/statefulset_some-name-rs0-1220.yml index 1bbc35c2ea..8d55678a4d 100644 --- a/e2e-tests/upgrade-consistency/compare/statefulset_some-name-rs0-1191.yml +++ b/e2e-tests/upgrade-consistency/compare/statefulset_some-name-rs0-1220.yml @@ -2,7 +2,7 @@ apiVersion: apps/v1 kind: StatefulSet metadata: annotations: {} - generation: 1 + generation: 2 labels: app.kubernetes.io/component: mongod app.kubernetes.io/instance: some-name @@ -136,6 +136,8 @@ spec: name: config - mountPath: /opt/percona name: bin + - mountPath: /.mongodb + name: mongosh - mountPath: /etc/mongodb-encryption name: some-name-mongodb-encryption-key readOnly: true @@ -177,6 +179,8 @@ spec: secretName: some-name-mongodb-keyfile - emptyDir: {} name: bin + - emptyDir: {} + name: mongosh - configMap: defaultMode: 420 name: some-name-rs0-mongod diff --git a/e2e-tests/upgrade-consistency/conf/some-name-rs0.yml b/e2e-tests/upgrade-consistency/conf/some-name-rs0.yml index 52b7c587fc..a33d5a4ad2 100644 --- a/e2e-tests/upgrade-consistency/conf/some-name-rs0.yml +++ b/e2e-tests/upgrade-consistency/conf/some-name-rs0.yml @@ -3,7 +3,7 @@ kind: PerconaServerMongoDB metadata: name: some-name spec: - crVersion: 1.19.1 + crVersion: 1.20.1 #platform: openshift image: imagePullPolicy: Always diff --git a/e2e-tests/upgrade-consistency/run b/e2e-tests/upgrade-consistency/run index d0bff58544..e598a1a5be 100755 --- a/e2e-tests/upgrade-consistency/run +++ b/e2e-tests/upgrade-consistency/run @@ -14,19 +14,19 @@ main() { desc 'create secrets and start client' kubectl_bin apply -f "${conf_dir}/client.yml" -f "${conf_dir}/secrets.yml" - desc "create first PSMDB cluster 1.19.1 $CLUSTER" + desc "create first PSMDB cluster 1.20.1 $CLUSTER" apply_cluster "$test_dir/conf/${CLUSTER}-rs0.yml" desc 'check if Pod started' wait_for_running "${CLUSTER}-rs0" "3" "true" desc 'check if service and statefulset created with expected config' - compare_kubectl service/${CLUSTER}-rs0 "-1191" - compare_kubectl statefulset/${CLUSTER}-rs0 "-1191" + compare_kubectl service/${CLUSTER}-rs0 "-1201" + compare_kubectl statefulset/${CLUSTER}-rs0 "-1201" - desc 'test 1.20.1' + desc 'test 1.21.0' kubectl_bin patch psmdb "${CLUSTER}" --type=merge --patch '{ - "spec": {"crVersion":"1.20.1"} + "spec": {"crVersion":"1.21.0"} }' # Wait for at least one reconciliation sleep 10 @@ -34,12 +34,12 @@ main() { wait_for_running "${CLUSTER}-rs0" "3" "true" desc 'check if service and statefulset created with expected config' - compare_kubectl service/${CLUSTER}-rs0 "-1201" - compare_kubectl statefulset/${CLUSTER}-rs0 "-1201" + compare_kubectl service/${CLUSTER}-rs0 "-1210" + compare_kubectl statefulset/${CLUSTER}-rs0 "-1210" - desc 'test 1.21.0' + desc 'test 1.22.0' kubectl_bin patch psmdb "${CLUSTER}" --type=merge --patch '{ - "spec": {"crVersion":"1.21.0"} + "spec": {"crVersion":"1.22.0"} }' # Wait for at least one reconciliation sleep 10 @@ -47,8 +47,8 @@ main() { wait_for_running "${CLUSTER}-rs0" "3" "true" desc 'check if service and statefulset created with expected config' - compare_kubectl service/${CLUSTER}-rs0 "-1210" - compare_kubectl statefulset/${CLUSTER}-rs0 "-1210" + compare_kubectl service/${CLUSTER}-rs0 "-1220" + compare_kubectl statefulset/${CLUSTER}-rs0 "-1220" destroy $namespace diff --git a/e2e-tests/version-service/conf/crd.yaml b/e2e-tests/version-service/conf/crd.yaml index 22c2882ba9..a2fd13cfc0 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.21.0 + app.kubernetes.io/version: v1.22.0 name: perconaservermongodbbackups.psmdb.percona.com spec: group: psmdb.percona.com @@ -238,7 +238,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.21.0 + app.kubernetes.io/version: v1.22.0 name: perconaservermongodbrestores.psmdb.percona.com spec: group: psmdb.percona.com @@ -479,7 +479,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.21.0 + app.kubernetes.io/version: v1.22.0 name: perconaservermongodbs.psmdb.percona.com spec: group: psmdb.percona.com diff --git a/installers/olm/Makefile b/installers/olm/Makefile index ad5c0fa75e..8ec3d8f80f 100644 --- a/installers/olm/Makefile +++ b/installers/olm/Makefile @@ -1,139 +1,184 @@ +# ============================================================================== +# Percona Server MongoDB Operator - OLM Bundle Generation +# ============================================================================== + +# Default target +.DEFAULT_GOAL := help +.SUFFIXES: +SHELL := /bin/bash + +# ============================================================================== +# Configuration Variables +# ============================================================================== + +# Project configuration NAME ?= percona-server-mongodb-operator IMAGE_TAG_OWNER ?= perconalab IMAGE_TAG_BASE ?= $(IMAGE_TAG_OWNER)/$(NAME) -SED := $(shell which gsed || which sed) -VERSION ?= $(shell git rev-parse --abbrev-ref HEAD | $(SED) -e 's^/^-^g; s^[.]^-^g;' | tr '[:upper:]' '[:lower:]') -IMAGE ?= $(IMAGE_TAG_BASE):$(VERSION) MODE ?= namespace -DEPLOYDIR = ./deploy - -BUNDLEDIR = $(DEPLOYDIR)/csv/redhat -BUNDLE_CHANNELS := --channels=stable -BUNDLE_DEFAULT_CHANNEL := --default-channel=stable -BUNDLE_METADATA_OPTS ?= $(BUNDLE_CHANNELS) $(BUNDLE_DEFAULT_CHANNEL) -# ENVTEST_K8S_VERSION refers to the version of kubebuilder assets to be downloaded by envtest binary. -ENVTEST_K8S_VERSION = 1.23 -.DEFAULT_GOAL := help -.SUFFIXES: +# Version detection +SED := $(shell which gsed || which sed) +VERSION ?= $(shell git rev-parse --abbrev-ref HEAD | $(SED) -e 's^/^-^g; s^[.]^-^g;' | tr '[:upper:]' '[:lower:]') +IMAGE := $(IMAGE_TAG_BASE):$(VERSION) -CONTAINER ?= docker -OPENSHIFT_VERSIONS ?= v4.13-v4.16 +# Bundle configuration +OPENSHIFT_VERSIONS ?= v4.16-v4.19 PACKAGE_CHANNEL ?= stable -MIN_KUBE_VERSION ?= 1.24.0 +MIN_KUBE_VERSION ?= "" DOCKER_DEFAULT_PLATFORM ?= linux/amd64 -SHELL := /bin/bash -REPO_ROOT = $(shell git rev-parse --show-toplevel) +# Paths +REPO_ROOT := $(shell git rev-parse --show-toplevel) +KUSTOMIZE := $(REPO_ROOT)/bin/kustomize + +# Tool versions +OPERATOR_SDK_VERSION := v1.41.1 + +# Bundle image configuration +BUNDLE_IMG ?= $(IMAGE_TAG_BASE):community-bundle-$(VERSION) + +# System detection for tool downloads +UNAME_S := $(shell uname -s) +UNAME_M := $(shell uname -m) +OS_KERNEL := $(shell echo "$(UNAME_S)" | tr '[:upper:]' '[:lower:]') +OS_MACHINE := $(UNAME_M) + +# Display colors GREEN := $(shell tput setaf 2) RESET := $(shell tput sgr0) -export VERSION -export BUNDLE_REPO -export OPENSHIFT_VERSIONS -export PACKAGE_CHANNEL -export MIN_KUBE_VERSION -export DOCKER_DEFAULT_PLATFORM -export MODE +# Export variables for generate.sh +export VERSION OPENSHIFT_VERSIONS PACKAGE_CHANNEL MIN_KUBE_VERSION DOCKER_DEFAULT_PLATFORM MODE + +# ============================================================================== +# Bundle Targets +# ============================================================================== -REPO_ROOT = $(shell git rev-parse --show-toplevel) +DISTROS := community redhat marketplace -distros = community redhat marketplace +.PHONY: bundles +bundles: ## Build all OLM bundles (community, redhat, marketplace) +bundles: check-prereqs $(DISTROS:%=bundles/%) +.PHONY: $(DISTROS:%=bundles/%) +$(DISTROS:%=bundles/%): bundles/%: tools/operator-sdk + @echo "$(GREEN)Building $* bundle...$(RESET)" + cd ../../config/manager/$(MODE)/ && $(KUSTOMIZE) edit set image psmdb-operator=$(IMAGE) + ./generate.sh $* + ./tools/operator-sdk bundle validate $@ --select-optional='suite=operatorframework' + $(if $(filter community,$*),./tools/operator-sdk bundle validate $@ --select-optional='name=community' --optional-values='index-path=$@/Dockerfile') + @echo "$(GREEN)✓ Bundle stored in installers/olm/bundles/$*$(RESET)" + +# ============================================================================== +# Docker Build & Push Targets +# ============================================================================== + +.PHONY: build +build: ## Build community bundle Docker image +build: + @echo "$(GREEN)Building bundle Docker image...$(RESET)" + docker build -f bundles/community/Dockerfile -t $(BUNDLE_IMG) --platform=linux/amd64 bundles/community + @echo "$(GREEN)✓ Bundle image built: $(BUNDLE_IMG)$(RESET)" + +.PHONY: push +push: ## Push bundle Docker image to registry + @echo "$(GREEN)Pushing bundle image to registry...$(RESET)" + docker push $(BUNDLE_IMG) + @echo "$(GREEN)✓ Bundle image pushed: $(BUNDLE_IMG)$(RESET)" + +# ============================================================================== +# Utility Targets +# ============================================================================== + +.PHONY: check-prereqs +check-prereqs: check-version check-git check-tools + +.PHONY: check-version check-version: ifndef VERSION $(error VERSION is not set) endif -KUSTOMIZE = $(REPO_ROOT)/bin/kustomize -kustomize: ## Download kustomize locally if necessary. - $(call go-get-tool,$(KUSTOMIZE),sigs.k8s.io/kustomize/kustomize/v4@v4.5.3) - -.PHONY: bundles -bundles: ## Build OLM bundles -bundles: check-version $(distros:%=bundles/%) - -# https://olm.operatorframework.io/docs/tasks/creating-operator-bundle/#validating-your-bundle -# https://github.com/operator-framework/community-operators/blob/8a36a33/docs/packaging-required-criteria-ocp.md -.PHONY: bundles/community -bundles/community: - cd ../../config/manager/$(MODE)/ && $(KUSTOMIZE) edit set image psmdb-operator=$(IMAGE) - ./generate.sh community - - env operator-sdk bundle validate $@ --select-optional='suite=operatorframework' - env operator-sdk bundle validate $@ --select-optional='name=community' --optional-values='index-path=$@/Dockerfile' - @echo "$(GREEN)!!!!!!!!!!! Build stored in installers/olm/bundles/community !!!!!!!!!!!!!!!$(RESET)" - -.PHONY: bundles/redhat -bundles/redhat: - cd ../../config/manager/$(MODE)/ && $(KUSTOMIZE) edit set image psmdb-operator=$(IMAGE) - ./generate.sh redhat - env operator-sdk bundle validate $@ --select-optional='suite=operatorframework' - @echo "$(GREEN)!!!!!!!!!!! Build stored in installers/olm/bundles/redhat !!!!!!!!!!!!!!!$(RESET)" +.PHONY: check-git +check-git: + @if ! git rev-parse --git-dir > /dev/null 2>&1; then \ + echo "Error: Not in a git repository"; \ + exit 1; \ + fi + +.PHONY: check-tools +check-tools: + @for cmd in gawk gcsplit yq; do \ + if ! command -v $$cmd >/dev/null 2>&1; then \ + echo "Error: $$cmd is required but not installed"; \ + exit 1; \ + fi; \ + done -# The 'marketplace' configuration is currently identical to the 'redhat', so we just copy it here. -.PHONY: bundles/marketplace -bundles/marketplace: - cd ../../config/manager/$(MODE)/ && $(KUSTOMIZE) edit set image psmdb-operator=$(IMAGE) - ./generate.sh marketplace - env operator-sdk bundle validate $@ --select-optional='suite=operatorframework' - @echo "$(GREEN)!!!!!!!!!!! Build stored in installers/olm/bundles/marketplace !!!!!!!!!!!!!!!$(RESET)" +.PHONY: install-olm +install-olm: ## Install OLM in Kubernetes cluster +install-olm: tools/operator-sdk + ./tools/operator-sdk olm install .PHONY: clean -clean: clean-deprecated clean: ## Remove generated files and downloaded tools rm -rf ./bundles ./projects ./tools -.PHONY: clean-deprecated -clean-deprecated: - rm -rf ./package - .PHONY: help -help: ALIGN=18 -help: ## Print this message - @awk -F ': ## ' -- "/^[^':]+: ## /"' { printf "'$$(tput bold)'%-$(ALIGN)s'$$(tput sgr0)' %s\n", $$1, $$2 }' $(MAKEFILE_LIST) +help: ## Show this help message + @awk 'BEGIN {FS = ": ## "; printf "\n$(GREEN)Usage:$(RESET)\n make [target]\n\n$(GREEN)Targets:$(RESET)\n"} /^[a-zA-Z_-]+: ## / {printf " %-20s %s\n", $$1, $$2}' $(MAKEFILE_LIST) -.PHONY: install-olm -install-olm: ## Install OLM in Kubernetes - env operator-sdk olm install +# ============================================================================== +# Tool Management +# ============================================================================== .PHONY: tools -tools: ## Download tools needed to build bundles - -tools: tools/$(SYSTEM)/jq -tools/$(SYSTEM)/jq: - install -d '$(dir $@)' - curl -fSL -o '$@' "https://github.com/stedolan/jq/releases/download/jq-1.7.1/jq-$$(SYSTEM='$(SYSTEM)'; \ - case "$$SYSTEM" in \ - (linux-*) echo "$${SYSTEM/-amd/}";; (darwin-*) echo "$${SYSTEM/darwin-*/osx-amd64}";; (*) echo '$(SYSTEM)';; \ - esac)" - chmod u+x '$@' - -tools: tools/$(SYSTEM)/kubectl -tools/$(SYSTEM)/kubectl: - install -d '$(dir $@)' - curl -fSL -o '$@' 'https://dl.k8s.io/release/$(shell curl -Ls https://dl.k8s.io/release/stable-1.31.txt)/bin/$(OS_KERNEL)/$(OS_MACHINE)/kubectl' - chmod u+x '$@' - -# quay.io/operator-framework/operator-sdk -tools: tools/$(SYSTEM)/operator-sdk -tools/$(SYSTEM)/operator-sdk: - install -d '$(dir $@)' - curl -fSL -o '$@' 'https://github.com/operator-framework/operator-sdk/releases/download/v1.39.1/operator-sdk_$(OS_KERNEL)_$(OS_MACHINE)' - chmod u+x '$@' - -tools: tools/$(SYSTEM)/opm -tools/$(SYSTEM)/opm: - install -d '$(dir $@)' - curl -fSL -o '$@' 'https://github.com/operator-framework/operator-registry/releases/download/v1.50.0/$(OS_KERNEL)-$(OS_MACHINE)-opm' - chmod u+x '$@' - -tools/$(SYSTEM)/venv: - install -d '$(dir $@)' - python3 -m venv '$@' - -tools: tools/$(SYSTEM)/yq -tools/$(SYSTEM)/yq: | tools/$(SYSTEM)/venv - 'tools/$(SYSTEM)/venv/bin/python' -m pip install yq - cd '$(dir $@)' && ln -s venv/bin/yq +tools: ## Download required tools +tools: tools/operator-sdk + +# Download operator-sdk +tools/operator-sdk: + @echo "Downloading operator-sdk $(OPERATOR_SDK_VERSION)..." + @install -d tools + @curl -fSL --fail -o '$@' \ + 'https://github.com/operator-framework/operator-sdk/releases/download/$(OPERATOR_SDK_VERSION)/operator-sdk_$(OS_KERNEL)_$(OS_MACHINE)' \ + || { rm -f '$@'; echo "Failed to download operator-sdk"; exit 1; } + @chmod +x '$@' + @echo "✓ operator-sdk installed" + +# ============================================================================== +# Development Targets +# ============================================================================== + +.PHONY: validate +validate: ## Validate existing bundles without rebuilding + @for distro in $(DISTROS); do \ + if [ -d "bundles/$$distro" ]; then \ + echo "Validating $$distro bundle..."; \ + ./tools/operator-sdk bundle validate "bundles/$$distro" --select-optional='suite=operatorframework' || exit 1; \ + fi; \ + done + @echo "$(GREEN)✓ All bundles validated$(RESET)" + +.PHONY: list-versions +list-versions: ## Show current version information + @echo "Current configuration:" + @echo " VERSION: $(VERSION)" + @echo " IMAGE: $(IMAGE)" + @echo " MODE: $(MODE)" + @echo " OPENSHIFT_VERSIONS: $(OPENSHIFT_VERSIONS)" + @echo " MIN_KUBE_VERSION: $(MIN_KUBE_VERSION)" + +# ============================================================================== +# Kustomize Integration (from root Makefile) +# ============================================================================== + +# Include go-get-tool function from root Makefile if kustomize target is needed +ifneq (,$(findstring kustomize,$(MAKECMDGOALS))) +include ../../Makefile +endif +.PHONY: kustomize +kustomize: ## Download kustomize locally if necessary + $(call go-get-tool,$(KUSTOMIZE),sigs.k8s.io/kustomize/kustomize/v4@latest) \ No newline at end of file diff --git a/installers/olm/bundle.csv.yaml b/installers/olm/bundle.csv.yaml index c51f34b556..877b945c68 100644 --- a/installers/olm/bundle.csv.yaml +++ b/installers/olm/bundle.csv.yaml @@ -3,6 +3,7 @@ apiVersion: operators.coreos.com/v1alpha1 kind: ClusterServiceVersion metadata: name: + namespace: default annotations: features.operators.openshift.io/disconnected: "false" features.operators.openshift.io/fips-compliant: "false" @@ -71,9 +72,9 @@ spec: are performed using Percona Backup for MongoDB (PBM) and can be stored on local PVs or in any S3-compatible cloud storage provider. - * **Physical Backups - [configure physical backups](https://docs.percona.com/percona-operator-for-mongodb/backups.html#physical) + * **Physical Backups** - [configure physical backups](https://docs.percona.com/percona-operator-for-mongodb/backups.html#physical) - * **Automated volume expansion + * **Automated volume expansion** Kubernetes supports the Persistent Volume expansion as a stable feature since v1.24. Using it with the Operator previously involved manual operations. Now this is automated, and users can resize their PVCs by just changing the value of the resources.requests.storage option in the PerconaServerMongoDB custom resource. @@ -115,15 +116,11 @@ spec: ``` - apiVersion: v1 - kind: Secret - metadata: name: my-cluster-name-secrets type: Opaque - data: MONGODB_BACKUP_USER: YmFja3Vw MONGODB_BACKUP_PASSWORD: YmFja3VwMTIzNDU2 @@ -137,32 +134,6 @@ spec: MONGODB_USER_ADMIN_PASSWORD: dXNlckFkbWluMTIzNDU2 PMM_SERVER_API_KEY: dXNlckFkbWluMTIzNDU2 ``` - - ### Release Highlights - * General availability of Physical Backups - Two releases ago we added experimental support for Physical Backups and Restores to significantly reduce Recovery Time Objective (RTO ), - especially for big data sets. With this release Percona announces the general availability of physical backups and restores for - Percona Server for MongoDB with the Operator. - - * Automated volume expansion - Kubernetes supports the Persistent Volume expansion as a stable feature since v1.24. Using it with the Operator previously involved - manual operations. Now this is automated, and users can resize their PVCs by just changing the value of the resources.requests.storage - option in the PerconaServerMongoDB custom resource. This feature is in a technical preview stage and is not recommended - for production environments. - - * Support for MongoDB 7 - Starting from this release, MongoDB 7.0 is now supported. Read our take on top-5 changes in MongoDB version 7 in this blog post . - - * Support for ARM architecture (technical preview) - ARM architecture meets the intensive growth of its usage nowadays, both in a segment of highly efficient cloud computing based on systems - like AWS Graviton, and the Internet of Things or Edge. Officially certified images for ARM are now available for the Operator, - as well as Percona Server for MongoDB and Percona Backup for MongoDB, while database monitoring based on PMM Client is yet to follow. - - * Fixing the overloaded allowUnsafeConfigurations flag - In the previous Operator versions allowUnsafeConfigurations Custom Resource option was used to allow configuring a cluster - with unsafe parameters, such as starting it with less than 3 replica set instances. In fact, setting this option to true - resulted in a wide range of reduced safety features without the user’s explicit intent: disabling TLS, - allowing backups in unhealthy clusters, etc. version: '' links: @@ -171,7 +142,7 @@ spec: - name: Percona Kubernetes Operators Landing Page url: 'https://www.percona.com/software/percona-kubernetes-operators' - name: Documentation - url: 'https://percona.github.io/percona-server-mongodb-operator/' + url: 'https://docs.percona.com/percona-operator-for-mongodb/' - name: Github url: 'https://github.com/percona/percona-server-mongodb-operator' maintainers: diff --git a/installers/olm/bundle.relatedImages.yaml b/installers/olm/bundle.relatedImages.yaml index 87cdd2304d..6036e5a2d7 100644 --- a/installers/olm/bundle.relatedImages.yaml +++ b/installers/olm/bundle.relatedImages.yaml @@ -1,15 +1,16 @@ +- name: mongod8.0 + image: registry.connect.redhat.com/percona/percona-server-mongodb-operator-containers@sha256: - name: mongod7.0 image: registry.connect.redhat.com/percona/percona-server-mongodb-operator-containers@sha256: - name: mongod6.0 image: registry.connect.redhat.com/percona/percona-server-mongodb-operator-containers@sha256: -- name: mongod5.0 - image: registry.connect.redhat.com/percona/percona-server-mongodb-operator-containers@sha256: - name: backup image: registry.connect.redhat.com/percona/percona-server-mongodb-operator-containers@sha256: - name: pmm image: registry.connect.redhat.com/percona/percona-server-mongodb-operator-containers@sha256: +- name: pmm3 + image: registry.connect.redhat.com/percona/percona-server-mongodb-operator-containers@sha256: +- name: logcollector + image: registry.connect.redhat.com/percona/percona-server-mongodb-operator-containers@sha256: - name: operator image: registry.connect.redhat.com/percona/percona-server-mongodb-operator@sha256: - - - diff --git a/pkg/version/version.txt b/pkg/version/version.txt index 3500250a4b..57807d6d0d 100644 --- a/pkg/version/version.txt +++ b/pkg/version/version.txt @@ -1 +1 @@ -1.21.0 +1.22.0