github.com/alibaba/sealer@v0.8.6-0.20220430115802-37a2bdaa8173/applications/mongodb/mongodb-manifest.yaml (about) 1 --- 2 apiVersion: v1 3 kind: Namespace 4 metadata: 5 name: mongodb-system 6 labels: 7 app.kubernetes.io/name: mongodb 8 app.kubernetes.io/instance: my-mongodb 9 --- 10 # Source: mongodb/templates/serviceaccount.yaml 11 apiVersion: v1 12 kind: ServiceAccount 13 metadata: 14 name: my-mongodb 15 namespace: mongodb-system 16 labels: 17 app.kubernetes.io/name: mongodb 18 app.kubernetes.io/instance: my-mongodb 19 secrets: 20 - name: my-mongodb 21 --- 22 # Source: mongodb/templates/secrets.yaml 23 apiVersion: v1 24 kind: Secret 25 metadata: 26 name: my-mongodb 27 namespace: mongodb-system 28 labels: 29 app.kubernetes.io/name: mongodb 30 app.kubernetes.io/instance: my-mongodb 31 app.kubernetes.io/component: mongodb 32 type: Opaque 33 data: 34 mongodb-root-password: "UGQ2MmZWUHM2Ug==" 35 mongodb-replica-set-key: "NFA0aENQU0FQeQ==" 36 --- 37 # Source: mongodb/templates/replicaset/scripts-configmap.yaml 38 apiVersion: v1 39 kind: ConfigMap 40 metadata: 41 name: my-mongodb-scripts 42 namespace: mongodb-system 43 labels: 44 app.kubernetes.io/name: mongodb 45 app.kubernetes.io/instance: my-mongodb 46 app.kubernetes.io/component: mongodb 47 data: 48 setup.sh: |- 49 #!/bin/bash 50 51 . /opt/bitnami/scripts/mongodb-env.sh 52 53 echo "Advertised Hostname: $MONGODB_ADVERTISED_HOSTNAME" 54 55 if [[ "$MY_POD_NAME" = "my-mongodb-0" ]]; then 56 echo "Pod name matches initial primary pod name, configuring node as a primary" 57 export MONGODB_REPLICA_SET_MODE="primary" 58 else 59 echo "Pod name doesn't match initial primary pod name, configuring node as a secondary" 60 export MONGODB_REPLICA_SET_MODE="secondary" 61 export MONGODB_INITIAL_PRIMARY_ROOT_PASSWORD="$MONGODB_ROOT_PASSWORD" 62 export MONGODB_INITIAL_PRIMARY_PORT_NUMBER="$MONGODB_PORT_NUMBER" 63 export MONGODB_ROOT_PASSWORD="" MONGODB_USERNAME="" MONGODB_DATABASE="" MONGODB_PASSWORD="" 64 export MONGODB_ROOT_PASSWORD_FILE="" MONGODB_USERNAME_FILE="" MONGODB_DATABASE_FILE="" MONGODB_PASSWORD_FILE="" 65 fi 66 67 exec /opt/bitnami/scripts/mongodb/entrypoint.sh /opt/bitnami/scripts/mongodb/run.sh 68 setup-hidden.sh: |- 69 #!/bin/bash 70 71 . /opt/bitnami/scripts/mongodb-env.sh 72 echo "Advertised Hostname: $MONGODB_ADVERTISED_HOSTNAME" 73 echo "Configuring node as a hidden node" 74 export MONGODB_REPLICA_SET_MODE="hidden" 75 export MONGODB_INITIAL_PRIMARY_ROOT_PASSWORD="$MONGODB_ROOT_PASSWORD" 76 export MONGODB_INITIAL_PRIMARY_PORT_NUMBER="$MONGODB_PORT_NUMBER" 77 export MONGODB_ROOT_PASSWORD="" MONGODB_USERNAME="" MONGODB_DATABASE="" MONGODB_PASSWORD="" 78 export MONGODB_ROOT_PASSWORD_FILE="" MONGODB_USERNAME_FILE="" MONGODB_DATABASE_FILE="" MONGODB_PASSWORD_FILE="" 79 exec /opt/bitnami/scripts/mongodb/entrypoint.sh /opt/bitnami/scripts/mongodb/run.sh 80 --- 81 # Source: mongodb/templates/arbiter/headless-svc.yaml 82 apiVersion: v1 83 kind: Service 84 metadata: 85 name: my-mongodb-arbiter-headless 86 namespace: mongodb-system 87 labels: 88 app.kubernetes.io/name: mongodb 89 app.kubernetes.io/instance: my-mongodb 90 app.kubernetes.io/component: arbiter 91 spec: 92 type: ClusterIP 93 clusterIP: None 94 ports: 95 - name: tcp-mongodb 96 port: 27017 97 targetPort: mongodb 98 selector: 99 app.kubernetes.io/name: mongodb 100 app.kubernetes.io/instance: my-mongodb 101 app.kubernetes.io/component: arbiter 102 --- 103 # Source: mongodb/templates/replicaset/headless-svc.yaml 104 apiVersion: v1 105 kind: Service 106 metadata: 107 name: my-mongodb-headless 108 namespace: mongodb-system 109 labels: 110 app.kubernetes.io/name: mongodb 111 app.kubernetes.io/instance: my-mongodb 112 app.kubernetes.io/component: mongodb 113 spec: 114 type: ClusterIP 115 clusterIP: None 116 publishNotReadyAddresses: true 117 ports: 118 - name: mongodb 119 port: 27017 120 targetPort: mongodb 121 selector: 122 app.kubernetes.io/name: mongodb 123 app.kubernetes.io/instance: my-mongodb 124 app.kubernetes.io/component: mongodb 125 --- 126 # Source: mongodb/templates/arbiter/statefulset.yaml 127 apiVersion: apps/v1 128 kind: StatefulSet 129 metadata: 130 name: my-mongodb-arbiter 131 namespace: mongodb-system 132 labels: 133 app.kubernetes.io/name: mongodb 134 app.kubernetes.io/instance: my-mongodb 135 app.kubernetes.io/component: arbiter 136 spec: 137 serviceName: my-mongodb-arbiter-headless 138 selector: 139 matchLabels: 140 app.kubernetes.io/name: mongodb 141 app.kubernetes.io/instance: my-mongodb 142 app.kubernetes.io/component: arbiter 143 template: 144 metadata: 145 labels: 146 app.kubernetes.io/name: mongodb 147 app.kubernetes.io/instance: my-mongodb 148 app.kubernetes.io/component: arbiter 149 spec: 150 serviceAccountName: my-mongodb 151 affinity: 152 podAntiAffinity: 153 preferredDuringSchedulingIgnoredDuringExecution: 154 - podAffinityTerm: 155 labelSelector: 156 matchLabels: 157 app.kubernetes.io/name: mongodb 158 app.kubernetes.io/instance: my-mongodb 159 app.kubernetes.io/component: arbiter 160 namespaces: 161 - "mongodb-system" 162 topologyKey: kubernetes.io/hostname 163 weight: 1 164 securityContext: 165 fsGroup: 1001 166 sysctls: [ ] 167 containers: 168 - name: mongodb-arbiter 169 image: docker.io/bitnami/mongodb:4.4.8-debian-10-r9 170 imagePullPolicy: "IfNotPresent" 171 securityContext: 172 runAsUser: 1001 173 env: 174 - name: BITNAMI_DEBUG 175 value: "false" 176 - name: MY_POD_NAME 177 valueFrom: 178 fieldRef: 179 fieldPath: metadata.name 180 - name: MY_POD_NAMESPACE 181 valueFrom: 182 fieldRef: 183 fieldPath: metadata.namespace 184 - name: K8S_SERVICE_NAME 185 value: "my-mongodb-arbiter-headless" 186 - name: MONGODB_REPLICA_SET_MODE 187 value: "arbiter" 188 - name: MONGODB_INITIAL_PRIMARY_HOST 189 value: "my-mongodb-0.my-mongodb-headless.$(MY_POD_NAMESPACE).svc.cluster.local" 190 - name: MONGODB_REPLICA_SET_NAME 191 value: "rs0" 192 - name: MONGODB_ADVERTISED_HOSTNAME 193 value: "$(MY_POD_NAME).$(K8S_SERVICE_NAME).$(MY_POD_NAMESPACE).svc.cluster.local" 194 - name: MONGODB_INITIAL_PRIMARY_ROOT_PASSWORD 195 valueFrom: 196 secretKeyRef: 197 name: my-mongodb 198 key: mongodb-root-password 199 - name: MONGODB_REPLICA_SET_KEY 200 valueFrom: 201 secretKeyRef: 202 name: my-mongodb 203 key: mongodb-replica-set-key 204 - name: ALLOW_EMPTY_PASSWORD 205 value: "no" 206 ports: 207 - containerPort: 27017 208 name: mongodb 209 livenessProbe: 210 tcpSocket: 211 port: mongodb 212 initialDelaySeconds: 30 213 periodSeconds: 10 214 timeoutSeconds: 5 215 successThreshold: 1 216 failureThreshold: 6 217 readinessProbe: 218 tcpSocket: 219 port: mongodb 220 initialDelaySeconds: 5 221 periodSeconds: 10 222 timeoutSeconds: 5 223 successThreshold: 1 224 failureThreshold: 6 225 resources: 226 limits: { } 227 requests: { } 228 --- 229 # Source: mongodb/templates/replicaset/statefulset.yaml 230 apiVersion: apps/v1 231 kind: StatefulSet 232 metadata: 233 name: my-mongodb 234 namespace: mongodb-system 235 labels: 236 app.kubernetes.io/name: mongodb 237 app.kubernetes.io/instance: my-mongodb 238 app.kubernetes.io/component: mongodb 239 spec: 240 serviceName: my-mongodb-headless 241 podManagementPolicy: OrderedReady 242 replicas: 2 243 updateStrategy: 244 type: RollingUpdate 245 selector: 246 matchLabels: 247 app.kubernetes.io/name: mongodb 248 app.kubernetes.io/instance: my-mongodb 249 app.kubernetes.io/component: mongodb 250 template: 251 metadata: 252 labels: 253 app.kubernetes.io/name: mongodb 254 app.kubernetes.io/instance: my-mongodb 255 app.kubernetes.io/component: mongodb 256 spec: 257 serviceAccountName: my-mongodb 258 affinity: 259 podAntiAffinity: 260 preferredDuringSchedulingIgnoredDuringExecution: 261 - podAffinityTerm: 262 labelSelector: 263 matchLabels: 264 app.kubernetes.io/name: mongodb 265 app.kubernetes.io/instance: my-mongodb 266 app.kubernetes.io/component: mongodb 267 namespaces: 268 - "mongodb-system" 269 topologyKey: kubernetes.io/hostname 270 weight: 1 271 securityContext: 272 fsGroup: 1001 273 sysctls: [ ] 274 containers: 275 - name: mongodb 276 image: docker.io/bitnami/mongodb:4.4.8-debian-10-r9 277 imagePullPolicy: "IfNotPresent" 278 securityContext: 279 runAsNonRoot: true 280 runAsUser: 1001 281 command: 282 - /scripts/setup.sh 283 env: 284 - name: BITNAMI_DEBUG 285 value: "false" 286 - name: MY_POD_NAME 287 valueFrom: 288 fieldRef: 289 fieldPath: metadata.name 290 - name: MY_POD_NAMESPACE 291 valueFrom: 292 fieldRef: 293 fieldPath: metadata.namespace 294 - name: K8S_SERVICE_NAME 295 value: "my-mongodb-headless" 296 - name: MONGODB_INITIAL_PRIMARY_HOST 297 value: "my-mongodb-0.$(K8S_SERVICE_NAME).$(MY_POD_NAMESPACE).svc.cluster.local" 298 - name: MONGODB_REPLICA_SET_NAME 299 value: "rs0" 300 - name: MONGODB_ADVERTISED_HOSTNAME 301 value: "$(MY_POD_NAME).$(K8S_SERVICE_NAME).$(MY_POD_NAMESPACE).svc.cluster.local" 302 - name: MONGODB_ROOT_PASSWORD 303 valueFrom: 304 secretKeyRef: 305 name: my-mongodb 306 key: mongodb-root-password 307 - name: MONGODB_REPLICA_SET_KEY 308 valueFrom: 309 secretKeyRef: 310 name: my-mongodb 311 key: mongodb-replica-set-key 312 - name: ALLOW_EMPTY_PASSWORD 313 value: "no" 314 - name: MONGODB_SYSTEM_LOG_VERBOSITY 315 value: "0" 316 - name: MONGODB_DISABLE_SYSTEM_LOG 317 value: "no" 318 - name: MONGODB_DISABLE_JAVASCRIPT 319 value: "no" 320 - name: MONGODB_ENABLE_JOURNAL 321 value: "yes" 322 - name: MONGODB_ENABLE_IPV6 323 value: "no" 324 - name: MONGODB_ENABLE_DIRECTORY_PER_DB 325 value: "no" 326 ports: 327 - containerPort: 27017 328 name: mongodb 329 livenessProbe: 330 exec: 331 command: 332 - mongo 333 - --disableImplicitSessions 334 - --eval 335 - "db.adminCommand('ping')" 336 initialDelaySeconds: 30 337 periodSeconds: 10 338 timeoutSeconds: 5 339 successThreshold: 1 340 failureThreshold: 6 341 readinessProbe: 342 exec: 343 command: 344 - bash 345 - -ec 346 - | 347 # Run the proper check depending on the version 348 [[ $(mongo --version | grep "MongoDB shell") =~ ([0-9]+\.[0-9]+\.[0-9]+) ]] && VERSION=${BASH_REMATCH[1]} 349 . /opt/bitnami/scripts/libversion.sh 350 VERSION_MAJOR="$(get_sematic_version "$VERSION" 1)" 351 VERSION_MINOR="$(get_sematic_version "$VERSION" 2)" 352 VERSION_PATCH="$(get_sematic_version "$VERSION" 3)" 353 if [[ "$VERSION_MAJOR" -ge 4 ]] && [[ "$VERSION_MINOR" -ge 4 ]] && [[ "$VERSION_PATCH" -ge 2 ]]; then 354 mongo --disableImplicitSessions $TLS_OPTIONS --eval 'db.hello().isWritablePrimary || db.hello().secondary' | grep -q 'true' 355 else 356 mongo --disableImplicitSessions $TLS_OPTIONS --eval 'db.isMaster().ismaster || db.isMaster().secondary' | grep -q 'true' 357 fi 358 initialDelaySeconds: 5 359 periodSeconds: 10 360 timeoutSeconds: 5 361 successThreshold: 1 362 failureThreshold: 6 363 resources: 364 limits: { } 365 requests: { } 366 volumeMounts: 367 - name: datadir 368 mountPath: /bitnami/mongodb 369 - name: scripts 370 mountPath: /scripts/setup.sh 371 subPath: setup.sh 372 volumes: 373 - name: scripts 374 configMap: 375 name: my-mongodb-scripts 376 defaultMode: 0755 377 volumeClaimTemplates: 378 - metadata: 379 name: datadir 380 spec: 381 accessModes: 382 - "ReadWriteOnce" 383 resources: 384 requests: 385 storage: "50Gi" 386 storageClassName: openebs-jiva-csi-sc