Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

K8SPSMDB-1249: Fix smart update for pods that are not member of replset #1781

Merged
merged 13 commits into from
Jan 14, 2025
1 change: 1 addition & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ uninstall: manifests ## Uninstall CRDs, rbac
deploy: ## Deploy operator
yq eval '(.spec.template.spec.containers[] | select(.name=="percona-server-mongodb-operator")).image = "$(IMAGE)"' $(DEPLOYDIR)/operator.yaml \
| yq eval '(.spec.template.spec.containers[] | select(.name=="percona-server-mongodb-operator").env[] | select(.name=="LOG_LEVEL")).value="DEBUG"' - \
| yq eval '(.spec.template.spec.containers[] | select(.name=="percona-server-mongodb-operator").env[] | select(.name=="DISABLE_TELEMETRY")).value="true"' - \
| kubectl apply -f -

undeploy: ## Undeploy operator
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18849,14 +18849,16 @@ spec:
initialized:
type: boolean
members:
items:
additionalProperties:
properties:
name:
type: string
version:
state:
type: integer
stateStr:
type: string
type: object
type: array
type: object
message:
type: string
ready:
Expand Down
8 changes: 5 additions & 3 deletions deploy/bundle.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -19545,14 +19545,16 @@ spec:
initialized:
type: boolean
members:
items:
additionalProperties:
properties:
name:
type: string
version:
state:
type: integer
stateStr:
type: string
type: object
type: array
type: object
message:
type: string
ready:
Expand Down
8 changes: 5 additions & 3 deletions deploy/crd.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -19545,14 +19545,16 @@ spec:
initialized:
type: boolean
members:
items:
additionalProperties:
properties:
name:
type: string
version:
state:
type: integer
stateStr:
type: string
type: object
type: array
type: object
message:
type: string
ready:
Expand Down
8 changes: 5 additions & 3 deletions deploy/cw-bundle.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -19545,14 +19545,16 @@ spec:
initialized:
type: boolean
members:
items:
additionalProperties:
properties:
name:
type: string
version:
state:
type: integer
stateStr:
type: string
type: object
type: array
type: object
message:
type: string
ready:
Expand Down
30 changes: 20 additions & 10 deletions e2e-tests/default-cr/run
Original file line number Diff line number Diff line change
Expand Up @@ -43,24 +43,34 @@ function start_cluster() {
}

function main() {
create_infra "$namespace"
cluster="my-cluster-name"

desc 'create secrets and start client'
kubectl_bin apply -f $deploy_dir/secrets.yaml
kubectl_bin apply -f $conf_dir/client.yml

desc "create first PSMDB cluster $cluster"
delete_crd
check_crd_for_deletion "${GIT_BRANCH}"
kubectl_bin apply ${OPERATOR_NS:+-n $OPERATOR_NS} --server-side --force-conflicts -f $deploy_dir/crd.yaml

if [ -n "$OPERATOR_NS" ]; then
create_namespace $OPERATOR_NS
create_namespace ${namespace}
apply_rbac cw-rbac
kubectl_bin apply -n ${OPERATOR_NS} -f $deploy_dir/cw-operator.yaml
yq eval '
((.. | select(.[] == "DISABLE_TELEMETRY")) |= .value="true") |
((.. | select(.[] == "LOG_LEVEL")) |= .value="DEBUG")' ${src_dir}/deploy/cw-operator.yaml \
| kubectl_bin apply -f -
else
create_namespace ${namespace}
apply_rbac rbac
yq eval '((.. | select(.[] == "DISABLE_TELEMETRY")) |= .value="true")' "$deploy_dir/operator.yaml" \
yq eval '
((.. | select(.[] == "DISABLE_TELEMETRY")) |= .value="true") |
((.. | select(.[] == "LOG_LEVEL")) |= .value="DEBUG")' ${src_dir}/deploy/operator.yaml \
| kubectl_bin apply -f -
fi

cluster="my-cluster-name"

desc 'create secrets and start client'
kubectl_bin apply -f $deploy_dir/secrets.yaml
kubectl_bin apply -f $conf_dir/client.yml

desc "create first PSMDB cluster $cluster"
yq eval '.spec.upgradeOptions.versionServiceEndpoint = "https://check-dev.percona.com" |
.spec.replsets[].affinity.antiAffinityTopologyKey = "none" |
.spec.replsets[].nonvoting.affinity.antiAffinityTopologyKey = "none" |
Expand Down
55 changes: 55 additions & 0 deletions e2e-tests/preinit-updates/conf/some-name.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
apiVersion: psmdb.percona.com/v1
kind: PerconaServerMongoDB
metadata:
name: some-name
spec:
#platform: openshift
image:
imagePullPolicy: Always
allowUnsafeConfigurations: false
updateStrategy: SmartUpdate
backup:
enabled: false
image: perconalab/percona-server-mongodb-operator:0.4.0-backup
replsets:
- name: rs0
# readinessDelaySec: 40
# livenessDelaySec: 120
affinity:
antiAffinityTopologyKey: none
resources:
limits:
cpu: 500m
memory: 0.5G
requests:
cpu: 100m
memory: 0.1G
configuration: |
operationProfiling:
mode: slowOp
slowOpThresholdMs: 100
security:
enableEncryption: true
redactClientLogData: false
setParameter:
ttlMonitorSleepSecs: 60
wiredTigerConcurrentReadTransactions: 128
wiredTigerConcurrentWriteTransactions: 128
storage:
engine: wiredTiger
wiredTiger:
collectionConfig:
blockCompressor: snappy
engineConfig:
directoryForIndexes: false
journalCompressor: snappy
indexConfig:
prefixCompression: true
volumeSpec:
persistentVolumeClaim:
resources:
requests:
storage: 1Gi
size: 3
secrets:
users: some-users
28 changes: 28 additions & 0 deletions e2e-tests/preinit-updates/run
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
#!/bin/bash

set -o errexit

test_dir=$(realpath $(dirname $0))
. ${test_dir}/../functions
set_debug

create_infra ${namespace}

cluster="some-name"
desc "test starts on cluster: ${cluster}"

apply_cluster ${test_dir}/conf/${cluster}.yml
wait_for_running ${cluster}-rs0 1 "false"
echo "enabling backups"
kubectl_bin patch psmdb ${cluster} --type=merge -p '{"spec":{"backup":{"enabled":true}}}'
echo "sleeping for 7 seconds..."
sleep 7
echo "changing rs0 resources"
kubectl_bin patch psmdb ${cluster} --type=json -p '[{"op":"replace","path":"/spec/replsets/0/resources/limits/cpu","value":"550m"}]'

wait_for_running ${cluster}-rs0 3
wait_cluster_consistency "${cluster}"

desc 'test passed'

destroy $namespace
1 change: 1 addition & 0 deletions e2e-tests/run-pr.csv
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ operator-self-healing-chaos
pitr
pitr-sharded
pitr-physical
preinit-updates
pvc-resize
recover-no-primary
replset-overrides
Expand Down
1 change: 1 addition & 0 deletions e2e-tests/run-release.csv
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ operator-self-healing-chaos
pitr
pitr-sharded
pitr-physical
preinit-updates
pvc-resize
recover-no-primary
replset-overrides
Expand Down
8 changes: 5 additions & 3 deletions e2e-tests/version-service/conf/crd.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -19545,14 +19545,16 @@ spec:
initialized:
type: boolean
members:
items:
additionalProperties:
properties:
name:
type: string
version:
state:
type: integer
stateStr:
type: string
type: object
type: array
type: object
message:
type: string
ready:
Expand Down
10 changes: 6 additions & 4 deletions pkg/apis/psmdb/v1/psmdb_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ import (
"github.com/percona/percona-backup-mongodb/pbm/defs"

"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"
)
Expand Down Expand Up @@ -234,8 +235,9 @@ type UpgradeOptions struct {
}

type ReplsetMemberStatus struct {
Name string `json:"name,omitempty"`
Version string `json:"version,omitempty"`
Name string `json:"name,omitempty"`
State mongo.MemberState `json:"state,omitempty"`
StateStr string `json:"stateStr,omitempty"`
}

type MongosStatus struct {
Expand All @@ -246,8 +248,8 @@ type MongosStatus struct {
}

type ReplsetStatus struct {
Members []*ReplsetMemberStatus `json:"members,omitempty"`
ClusterRole ClusterRole `json:"clusterRole,omitempty"`
Members map[string]ReplsetMemberStatus `json:"members,omitempty"`
ClusterRole ClusterRole `json:"clusterRole,omitempty"`

Initialized bool `json:"initialized,omitempty"`
AddedAsShard *bool `json:"added_as_shard,omitempty"`
Expand Down
10 changes: 3 additions & 7 deletions pkg/apis/psmdb/v1/zz_generated.deepcopy.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion pkg/controller/perconaservermongodb/finalizers.go
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ func (r *ReconcilePerconaServerMongoDB) deletePSMDBPods(ctx context.Context, cr
rsDeleted = false
switch err {
case errWaitingTermination, errWaitingFirstPrimary:
log.Error(err, "rs", rs.Name)
log.Info("deleting rs pods", "rs", rs.Name, "status", err.Error())
hors marked this conversation as resolved.
Show resolved Hide resolved
continue
default:
log.Error(err, "failed to delete rs pods", "rs", rs.Name)
Expand Down
Loading
Loading