news
Serverspace запустил услугу Managed Kubernetes
VB
Vyacheslav Breus
23 августа 2022
Обновлено 14 сентября 2022

Установка MongoDB в кластер Kubernetes

Kubernetes MongoDB Базы данных

Введение

MongoDB — одна из самых популярных систем для управления базами данных NoSQL. В сочетании с Kubernetes оно может стать легко масштабируемым многоцелевым решением, подходящим  для самых разных задач.

В Serverspace вы можете создать сервер с уже установленным приложением "MongoDB".

Reply

Требования к установке

Для работы с MongoDB в Kubernetes вам нужен "управляющий" сервер и привилегированная учетная запись на нем. Этот сервер может работать под любой операционной системой, однако предпочтителен все же Linux. Также потребуется кластер Kubernetes (будет развернут на следующем шаге).

Создание кластера Kubernetes

Прежде, чем устанавливать MongoDB, необходимо развернуть Kubernetes. Чтобы сделать это в инфраструктуре Serverspace, просто войдите в личный кабинет, затем перейдите в раздел Kubernetes и начните установку:

pic1

pic2

Процесс может занять достаточно долгое время, пожалуйста, наберитесь терпения. По завершении вы увидите параметры кластера и кнопку, по нажатию на которую вы сможете скачать файл, позволяющий подключиться к свежесозданному окружению:

pic3

Установка MongoDB

Для установки сервиса управления базами данных нужно выполнить несколько шагов.

Подключитесь к "управляющему" серверу в качестве привилегированного пользователя и установите ПО при помощи пакетного менеджера.
sudo -s
apt-get update && apt install curl apt-transport-https -y && curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add - && echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | tee -a /etc/apt/sources.list.d/kubernetes.list && apt-get update && apt install kubectl -y

pic4

Внесите данные доступа к окружению Kubernetes в специальный файл, потом «подключите» данный файл как переменную к конфигурации вашего системного профиля.
mkdir /usr/local/etc/mongo && cd /usr/local/etc/mongo
cat << EOF > testcluster.conf
<ВСТАВЬТЕ СЮДА ДАННЫЕ ИЗ ПРЕДОСТАВЛЕННОГО В ЛИЧНОМ КАБИНЕТЕ ФАЙЛА>
EOF
echo "export KUBECONFIG=testcluster.conf" >> ~/.bashrc

pic5

Проверьте подключение с помощью команды.
kubectl cluster-info

Если в результате вы увидите что-то, похожее на рисунок ниже - вы подключились успешно:

pic6

    MongoDB для хранения данных использует специальный контейнер. Его конфигурация описывается в специальном конфигурационном файле. Вы можете изменить его под свои конкретные задачи.
    cat << EOF > PersistVolClaim.yaml
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
    name: mongodatapv
    spec:
    accessModes:
    - ReadWriteOnce
    resources:
    requests:
    storage: 1Gi # Емкость контейнера
    EOF

    pic8

    Следующим шагом предстоит создать файл, содержащий реквизиты для подключения непосредственно к MongoDB.
    cat << EOF > Creds.yaml
    apiVersion: v1
    data:
    username: <ЗАШИФРОВАННЫЙ С ПОМОЩЬЮ BASE64 ЛОГИН>
    password: <ЗАШИФРОВАННЫЙ С ПОМОЩЬЮ BASE64 ПАРОЛЬ>
    kind: Secret
    metadata:
    creationTimestamp: null
    name: creds
    EOF

    рис8

    Совет - при надобности вы можете шифровать и расшифровывать данные при помощи простых команд:

    echo <ДАННЫЕ> | base64 # для шифрования при помощи base64
    echo <ЗАШИФРОВАННЫЕ ДАННЫЕ> | base64 -d # для дешифровки

    pic10

    Далее создайте файл с описанием конфигурации контейнера MongoDB.
    cat << EOF > Deploy.yaml
    apiVersion: apps/v1
    kind: Deployment
    metadata:
    labels:
    app: mongo
    name: mongo
    spec:
    replicas: 1
    selector:
    matchLabels:
    app: mongo
    strategy: {}
    template:
    metadata:
    labels:
    app: mongo
    spec:
    containers:
    - image: mongo
    name: mongo
    args: ["--dbpath","/data/db"]
    livenessProbe:
    exec:
    command:
    - mongo
    - --disableImplicitSessions
    - --eval
    readinessProbe:
    exec:
    command:
    - mongo
    - --disableImplicitSessions
    - --eval
    env:
    - name: MONGO_INITDB_ROOT_USERNAME
    valueFrom:
    secretKeyRef:
    name: creds
    key: username
    - name: MONGO_INITDB_ROOT_PASSWORD
    valueFrom:
    secretKeyRef:
    name: creds
    key: password
    volumeMounts:
    - name: "datadir"
    mountPath: "/data/db"
    volumes:
    - name: "datadir"
    persistentVolumeClaim:
    claimName: "mongopvc"
    EOF

    pic11

    Для запуска созданного инстанса выполните команду:
    kubectl apply -f

    Свидетельствующий об успехе вывод выглядит так:

    pic12

    Проверка подключения

    Теперь, когда все контейнеры успешно развернуты, можно проверить подключение при помощи следующих команд.
    kubectl exec deployment/client -it -- /bin/bash
    mongo

    Об успешном подключении к MongoDB свидетельствует стандартное приглашение сервиса управления базами данных:

    pic14

    Для создания новой базы данных просто «переключитесь» на нее. Внимание - фактически данные не будут сохранены до тех пор, пока в созданную БД не будут добавлены любые данные.
    use ИМЯ_БАЗЫ_ДАННЫХ
    db.createCollection("newdata") # пример добавляемых в базу тестовых данных
    show dbs # проверка существования базы данных

    pic15

    Заключение

    После прочтения этой статьи вы узнали, как создать кластер Kubernetes через личный кабинет ServerSpace, развернуть в нем сервис MongoDB, создать новую базу данных и добавить в нее новые данные.

    Оценка:
    5 из 5
    Аverage rating : 5
    Оценок: 13
    191028 Санкт-Петербург Литейный пр., д. 26, Лит. А
    +7 (812) 403-06-99
    700 300
    ООО «ИТГЛОБАЛКОМ ЛАБС»
    700 300