Introduction
Dans le Serverspace vous pouvez créer un serveur avec l'application déjà installée "MongoDB".
MongoDB est l'une des solutions de gestion de base de données NoSQL les plus populaires. En combinations avec Kubernetes Orchestrator, il pourrait s'agir d'une solution polyvalente facile à mettre à l'échelle.
Exigences
Pour travailler avec MongoDB dans Kubernetes vous avez besoin d'un serveur sous n'importe quel système d'exploitation (Linux avec accès root ou sudo de préférence) pour gérer et Kubernetes cluster (voir étape suivante).
Kubernetes création d'instances
Avant de déployer MongoDB, vous devez avoir Kubernetes. Pour le créer en ServerSpace infrastructure, connectez-vous simplement à votre clizone ent, puis click à Kubernetes lier et créer une instance :
Le processus peut prendre un certain temps, veuillez être patient. Une fois terminé, vous verrez le cluster parameters et devrait télécharger le fichier d'accréditation d'accès :
Configuration de l'instance
Pour installer le service de base de données sur votre Kubernetes cluster s'il vous plaît suivez:
- Connectez-vous à votre serveur de gestion en tant qu'utilisateur privilégié et installez les outils nécessaires :
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
- Créez un fichier qui stocke les données d'accès au cluster et définissez-le comme variable système :
mkdir /usr/local/etc/mongo && cd /usr/local/etc/mongo
cat << EOF > testcluster.conf
<PASTE CONFIGURATION DATA HERE>
EOF
echo "export KUBECONFIG=testcluster.conf" >> ~/.bashrc
- Pour vérifier la connexion, exécutez simplement :
kubectl cluster-info
Si la sortie ressemble à l'image ci-dessous - la connexion est réussie
- MongoDB a besoin de stockage pour enregistrer ses données. Le processus de création de stockage est décrit dans des fichiers de configuration spéciaux. Vous pouvez le personnaliser selon vos besoins :
cat << EOF > PersistVolClaim.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mongodatapv # Should be the same with name in previous file
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi # Should be the same with capacity in previous file
EOF
L'étape suivante consiste à créer un fichier d'informations d'identification, qui stocke l'accès à MongoDB :
cat << EOF > Creds.yaml
apiVersion: v1
data:
username: <BASE64_ENCODED_LOGIN>
password: <BASE64_ENCODED_PASSWORD>
kind: Secret
metadata:
creationTimestamp: null
name: creds
EOF
Conseil : Pour encoder et décoder les données, vous pouvez utiliser des commandes simples :
echo <DATA> | base64 # to crypt data via base64 tool
echo <BASE64_ENCRYPTED_DATA> | base64 -d # to decrypt it
- Créez ensuite un fichier de déploiement d'instance :
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
- Pour lancer MongoDB, veuillez exécuter la commande :
kubectl apply -f
Une sortie réussie ressemble à l'image ci-dessous :
Vérification de la connexion
- Maintenant que les instances sont déployées, vous devez vérifier la connexion. Exécutez simplement :
kubectl exec deployment/client -it -- /bin/bash
mongo
Si vous voyez l'invite MongoDB, la connexion est réussie :
- Pour créer une nouvelle base de données, il suffit de "basculer" vers la nouvelle base de données. REMARQUE : Les données ne seront pas enregistrées tant que vous n'aurez pas ajouté quelque chose dans la base de données :
use NEW_DATABASE_NAME
db.createCollection("newdata") # example to add data
show dbs # check is database exist
Conclusion
Après la lecture de cet article, vous avez su créer Kubernetes via ServerSpace client, déployez-y MongoDB, créez une nouvelle base de données et insérez de nouvelles données dans cette base.