91 lines
3.2 KiB
YAML
91 lines
3.2 KiB
YAML
apiVersion: mongodbcommunity.mongodb.com/v1
|
||
kind: MongoDBCommunity
|
||
metadata:
|
||
name: chat-mongodb
|
||
namespace: juwan
|
||
spec:
|
||
members: 1
|
||
type: ReplicaSet
|
||
version: "8.3.1"
|
||
security:
|
||
authentication:
|
||
modes:
|
||
- SCRAM
|
||
users:
|
||
- name: app-user
|
||
db: admin
|
||
passwordSecretRef:
|
||
name: chat-mongodb-app-user-password
|
||
roles:
|
||
- name: readWrite
|
||
db: juwan_chat
|
||
scramCredentialsSecretName: chat-mongodb-app-user-scram
|
||
additionalMongodConfig:
|
||
storage.wiredTiger.engineConfig.journalCompressor: zlib
|
||
statefulSet:
|
||
spec:
|
||
template:
|
||
spec:
|
||
containers:
|
||
- name: mongod
|
||
# 复刻 mongodb-community-operator 在 mongodbstatefulset.go 中生成的启动脚本
|
||
# (buildMongodbCommand),并在 exec mongod 前插入 setarch linux64 --uname-2.6。
|
||
#
|
||
# mongod 8.0+ 在 kernel ≥ 6.19 上有两处拒绝启动的检查:
|
||
# 1. docker-entrypoint.py 的 enforce_kernel_compatibility — 读 uname 版本,≥ 6.19 即 exit 1
|
||
# 2. mongod 自身的 validateRseqKernelCompat — 同样的内核版本检查
|
||
# setarch 开启 UNAME26 personality,使 uname().release 返回 2.6.x,两处检查均不触发。
|
||
#
|
||
# GLIBC_TUNABLES=glibc.pthread.rseq=1 让 glibc 注册 rseq,避免 tcmalloc 自行注册
|
||
# per-thread rseq 时在 6.19+ 上触发 SIGSEGV。
|
||
# 参考:SERVER-121912, github.com/google/tcmalloc/issues/292
|
||
# 以上 workaround 使 mongod 8.3.1 可在 Ubuntu 26.04 (kernel 7.0) 上运行。
|
||
command:
|
||
- /bin/sh
|
||
- -c
|
||
- |
|
||
if [ -e /hooks/version-upgrade ]; then
|
||
/hooks/version-upgrade
|
||
fi
|
||
echo "Waiting for automation-mongod.conf and keyfile..."
|
||
while ! [ -f /data/automation-mongod.conf -a -f /var/lib/mongodb-mms-automation/authentication/keyfile ]; do
|
||
sleep 3
|
||
done
|
||
sleep 15
|
||
echo "Starting mongod via setarch uname-2.6 wrapper..."
|
||
exec setarch linux64 --uname-2.6 mongod -f /data/automation-mongod.conf
|
||
env:
|
||
- name: GLIBC_TUNABLES
|
||
value: glibc.pthread.rseq=1
|
||
resources:
|
||
requests:
|
||
cpu: 30m
|
||
memory: 100Mi
|
||
limits:
|
||
memory: 1Gi
|
||
- name: mongodb-agent
|
||
env:
|
||
- name: GLIBC_TUNABLES
|
||
value: glibc.pthread.rseq=1
|
||
resources:
|
||
requests:
|
||
cpu: 30m
|
||
memory: 80Mi
|
||
limits:
|
||
memory: 200Mi
|
||
volumeClaimTemplates:
|
||
- metadata:
|
||
name: data-volume
|
||
spec:
|
||
accessModes: ["ReadWriteOnce"]
|
||
resources:
|
||
requests:
|
||
storage: 1Gi
|
||
- metadata:
|
||
name: logs-volume
|
||
spec:
|
||
accessModes: ["ReadWriteOnce"]
|
||
resources:
|
||
requests:
|
||
storage: 256Mi
|