Установка MongoDB в кластер Kubernetes
Введение
MongoDB — одна из самых популярных систем для управления базами данных NoSQL. В сочетании с Kubernetes оно может стать легко масштабируемым многоцелевым решением, подходящим для самых разных задач.
В Serverspace вы можете создать сервер с уже установленным приложением "MongoDB".
Требования к установке
Для работы с MongoDB в Kubernetes вам нужен "управляющий" сервер и привилегированная учетная запись на нем. Этот сервер может работать под любой операционной системой, однако предпочтителен все же Linux. Также потребуется кластер Kubernetes (будет развернут на следующем шаге).
Создание кластера Kubernetes
Прежде, чем устанавливать MongoDB, необходимо развернуть Kubernetes. Чтобы сделать это в инфраструктуре Serverspace, просто войдите в личный кабинет, затем перейдите в раздел Kubernetes и начните установку:
Процесс может занять достаточно долгое время, пожалуйста, наберитесь терпения. По завершении вы увидите параметры кластера и кнопку, по нажатию на которую вы сможете скачать файл, позволяющий подключиться к свежесозданному окружению:
Установка MongoDB
Для установки сервиса управления базами данных нужно выполнить несколько шагов.
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
cat << EOF > testcluster.conf
<ВСТАВЬТЕ СЮДА ДАННЫЕ ИЗ ПРЕДОСТАВЛЕННОГО В ЛИЧНОМ КАБИНЕТЕ ФАЙЛА>
EOF
echo "export KUBECONFIG=testcluster.conf" >> ~/.bashrc
Если в результате вы увидите что-то, похожее на рисунок ниже - вы подключились успешно:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mongodatapv
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi # Емкость контейнера
EOF
apiVersion: v1
data:
username: <ЗАШИФРОВАННЫЙ С ПОМОЩЬЮ BASE64 ЛОГИН>
password: <ЗАШИФРОВАННЫЙ С ПОМОЩЬЮ BASE64 ПАРОЛЬ>
kind: Secret
metadata:
creationTimestamp: null
name: creds
EOF
Совет - при надобности вы можете шифровать и расшифровывать данные при помощи простых команд:
echo <ЗАШИФРОВАННЫЕ ДАННЫЕ> | base64 -d # для дешифровки
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
Свидетельствующий об успехе вывод выглядит так:
Проверка подключения
mongo
Об успешном подключении к MongoDB свидетельствует стандартное приглашение сервиса управления базами данных:
db.createCollection("newdata") # пример добавляемых в базу тестовых данных
show dbs # проверка существования базы данных
Заключение
После прочтения этой статьи вы узнали, как создать кластер Kubernetes через личный кабинет ServerSpace, развернуть в нем сервис MongoDB, создать новую базу данных и добавить в нее новые данные.