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