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