MongoDB在Kubernetes中使用HELM升级图表版本后抛出身份验证错误



我试图将MongoDB的图表版本从10.1.0升级到11.2.0,因为之前的版本已经过时了。在早期版本中未启用身份验证。但我在升级时设置了root用户密码。然而,仲裁者keep抛出身份验证错误,mongopods崩溃循环。

正如我所研究的,这是因为PVC(persistence:true(,所以当我将其设置为false并删除helm版本时,安装成功,pod正在运行。

但当使用helm3 upgrade时,出现了以下错误:

Error: UPGRADE FAILED: cannot patch with kind StatefulSet: StatefulSet.apps is invalid: spec: Forbidden: updates to statefulset spec for fields other than 'replicas', 'template', and 'updateStrategy' are forbidden

我正在设法保留persistence:true并为MongoDB设置身份验证。

值.yaml

mongodb:
architecture: replicaset
replicaCount: 2
podAntiAffinityPreset: hard
auth:
enabled: false
useStatefulSet: true
persistence:
enabled: true
size: 1Gi
resources:
limits:
cpu: 1
memory: 2Gi
requests:
cpu: 100m
memory: 1Gi
metrics:
enabled: true
livenessProbe:
enabled: true
readinessProbe:
enabled: true
resources:
limits:
cpu: 200m
memory: 256Mi
requests:
cpu: 100m
memory: 128Mi

gitlab CI

script:
- helm3 install
--namespace="$NAMESPACE"
--wait
--timeout $HELM_TIMEOUT
..some other stuff..
--set mongodb.auth.enabled="true"
--set mongodb.auth.rootPassword="$MONGO_ROOT_PWD_STAGE"
--set mongodb.auth.replicaSetKey="$MONGO_REPLICA_SET_KEY_STAGE"
--values ${!HELM_VALUES}
--kube-context stage
"$RELEASE_NAME" chart/

感谢的帮助

在K8S Statefulset中,与Deployment不同,有些字段在创建后无法更改,您只需更改副本数量、pod模板和updateStrategy。

因此,如果你在中更改某些内容,就会出现此错误

persistence:
enabled: true
size: 1Gi

因为它改变了PVC的配置。

绕过问题:

  • 创建一个新的Statfulset并删除旧的(您可以在删除之前复制数据(
  • 尝试手动修补PVC(或尝试更改的任何其他资源(,然后应用helm upgrade命令

您可以使用helm-diff插件将当前修订版与您试图创建的新修订版进行比较,以了解发生了什么。

最新更新