For AI agents: the complete documentation index is available at https://docs.ovhcloud.com/fr/llms.txt, the full documentation bundle is available at https://docs.ovhcloud.com/fr/llms-full.txt, and this page is available as Markdown at https://docs.ovhcloud.com/fr/guides/public-cloud/containers-orchestration/managed-kubernetes/vrack-example-k8s-pci.md.

Utiliser vRack - Exemple avec Managed Kubernetes et une instance Public Cloud

Voir en Markdown

Découvrez comment connecter un cluster OVHcloud Managed Kubernetes et une instance Public Cloud au sein du même vRack

Objectif

Le vRack OVHcloud est une solution de réseau privé qui permet à nos clients de faire transiter du trafic entre les serveurs dédiés OVHcloud, ainsi qu'avec d'autres services OVHcloud. Il permet également d'ajouter des instances Public Cloud et des clusters Managed Kubernetes à votre réseau privé, afin de créer une infrastructure de ressources physiques et virtuelles.

Dans ce tutoriel, nous allons activer le vRack sur un projet Public Cloud. Nous allons ensuite créer un cluster Managed Kubernetes et une instance Public Cloud (PCI). Les deux seront ensuite ajoutés au vRack.

Concrètement, nous allons installer un cluster OVHcloud Managed Kubernetes et une instance Public Cloud, tous deux dans le même réseau privé. Nous allons déployer un WordPress sur le cluster Kubernetes, qui utilisera le réseau privé pour se connecter à une base de données MariaDB installée sur l'instance Public Cloud.

Ce tutoriel vous montre, à titre d'exemple, comment utiliser le vRack OVHcloud pour connecter un cluster Managed Kubernetes à une instance Public Cloud au sein du même réseau privé.

Warning

La méthode décrite dans ce tutoriel fonctionne actuellement si le cluster Managed Kubernetes et l'instance externe se trouvent dans le même réseau privé du vRack. Le processus permettant de les connecter entre différents réseaux privés sera décrit dans un prochain tutoriel.

Prérequis

Ce tutoriel suppose que vous disposez déjà d'un cluster OVHcloud Managed Kubernetes fonctionnel, ainsi que de connaissances de base sur son fonctionnement. Pour en savoir plus sur ces sujets, consultez le guide Démarrer avec OVHcloud Managed Kubernetes Service.

Vous devez également avoir installé Helm sur votre poste de travail et sur votre cluster. Consultez le tutoriel Comment installer Helm sur OVHcloud Managed Kubernetes Service.

Il suppose également que vous avez déjà suivi le guide Utiliser vRack pour activer le vRack sur votre projet Public Cloud et intégrer votre cluster OVHcloud Managed Kubernetes au vRack.

En pratique

Configurer le vRack

Nous devons d'abord configurer un réseau privé vRack pour notre Public Cloud. Pour cela, suivez le guide Configurer vRack pour Public Cloud. Une fois que vous avez créé un vRack et l'avez ajouté à un réseau privé, vous pouvez poursuivre.

Configuration du vRack
Warning

Comme expliqué dans le guide Limites connues, les sous-réseaux suivants ne sont pas compatibles avec la fonctionnalité vRack et peuvent générer des comportements incohérents avec les réseaux overlay que nous utilisons :

10.2.0.0/16 # Subnet used by pods
10.3.0.0/16 # Subnet used by services
172.17.0.0/16 # Subnet used by the Docker daemon

Configurer Managed Kubernetes

Nous créons ensuite un cluster Kubernetes, comme expliqué dans le guide Créer un cluster. L'intégration d'un cluster à un réseau privé vRack doit se faire à la troisième étape de la création du cluster, lorsque nous pouvons choisir un réseau privé existant pour le cluster :

Choisir un réseau privé pour ce cluster

Notre nouveau cluster sera créé au sein du réseau privé vRack que nous avons choisi.

Dans le tableau de bord de Managed Kubernetes Service, nous pouvons voir le cluster, avec le réseau privé choisi dans la colonne Réseau attaché :

Informations sur le réseau privé dans la colonne Réseau attaché

Configurer la PCI

Nous pouvons maintenant créer une nouvelle instance Public Cloud au sein du vRack, en suivant le guide Intégrer une instance au vRack.

Nous allons créer une instance Ubuntu :

Configuration de la PCI - Instance Ubuntu

À la quatrième étape de la création, nous l'attachons au réseau privé créé précédemment :

Configuration de la PCI - Attachement à un réseau privé

Une fois l'instance créée, cliquez sur son nom, puis faites défiler légèrement la page afin de voir les informations de connexion dans l'espace client OVHcloud.

Configuration de la PCI - Informations de connexion SSH

Si nous nous connectons à l'instance en SSH, nous pouvons constater qu'elle dispose de deux interfaces réseau : l'une attachée à l'adresse IP publique utilisée pour la connexion, l'autre attachée au réseau privé :

$ ssh ubuntu@141.95.174.113
The authenticity of host '141.95.174.113 (141.95.174.113)' can't be established.
ECDSA key fingerprint is SHA256:+bfW0MhF8CisP+6LmXa1hdJ15owKWk+KKTgeIoFLnOY.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '141.95.174.113' (ECDSA) to the list of known hosts.
Welcome to Ubuntu 21.10 (GNU/Linux 5.13.0-19-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

  System information as of Mon Dec 20 15:43:20 UTC 2021

  System load:  0.0               Processes:             202
  Usage of /:   3.3% of 48.29GB   Users logged in:       0
  Memory usage: 3%                IPv4 address for ens3: 141.95.174.113
  Swap usage:   0%                IPv4 address for ens4: 10.0.64.51

8 updates can be applied immediately.
To see these additional updates run: apt list --upgradable

The list of available updates is more than a week old.
To check for new updates run: sudo apt update

Notez l'adresse IP du réseau privé (dans notre exemple 10.0.64.51), car nous en aurons besoin pour configurer WordPress.

Configurer MariaDB sur la PCI

Installer MariaDB

La méthode la plus simple pour installer MariaDB sur la PCI consiste à utiliser le gestionnaire de paquets apt :

sudo apt -y install mariadb-server

Cela installera MariaDB ainsi que toutes ses dépendances :

ubuntu@b2-7-gra11:~$ sudo apt -y install mariadb-server
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
  [...]
Suggested packages:
  [...]
The following NEW packages will be installed:
  [...]
0 upgraded, 31 newly installed, 0 to remove and 4 not upgraded.
Need to get 16.3 MB of archives.
After this operation, 101 MB of additional disk space will be used.
Get:1 http://nova.clouds.archive.ubuntu.com/ubuntu impish/main amd64 mysql-common all 5.8+1.0.5ubuntu2 [7496 B]
  [...]
Get:19 http://nova.clouds.archive.ubuntu.com/ubuntu impish/main amd64 libcgi-fast-perl all 1:2.15-1 [10.5 kB]
  [...]
Setting up mariadb-server (1:10.5.12-1build1) ...
Setting up libcgi-fast-perl (1:2.15-1) ...
Processing triggers for man-db (2.9.4-2) ...
Processing triggers for libc-bin (2.34-0ubuntu3) ...
Scanning processes...
Scanning linux images...

Running kernel seems to be up-to-date.

No services need to be restarted.

No containers need to be restarted.

No user sessions are running outdated binaries.

Créer un utilisateur et une base de données

Nous pouvons maintenant nous connecter à la base de données à l'aide du client mysql :

sudo mysql

Par défaut, le compte root n'a pas de mot de passe lorsqu'il se connecte depuis localhost, nous accédons donc directement à la CLI de MariaDB.

Créez une base de données wordpress_db et un utilisateur wordpress_user :

1. Créer la base de données :

create database wordpress_db;

2. Créer l'utilisateur (avec accès distant) et lui accorder les privilèges sur la nouvelle base de données :

grant all privileges on wordpress_db.* TO 'wordpress_user'@'%' identified by 'a_strong_password';

3. Appliquer les changements pour que les modifications sur les tables de privilèges de MariaDB prennent effet immédiatement :

flush privileges;

L'instance MariaDB est maintenant prête.

ubuntu@b2-7-gra11:~$ sudo mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 44
Server version: 10.5.12-MariaDB-1build1 Ubuntu 21.10

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> create database wordpress_db;
Query OK, 1 row affected (0.001 sec)

MariaDB [(none)]> grant all privileges on wordpress_db.* TO 'wordpress_user'@'%' identified by 'a_strong_password';
Query OK, 0 rows affected (0.002 sec)

MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.001 sec)

MariaDB [(none)]> exit
Bye

Faire écouter MariaDB sur l'interface du réseau privé

Par défaut, MariaDB écoute uniquement sur localhost. Pour accepter les requêtes provenant du réseau privé, nous devons également le faire écouter sur cette interface réseau.

La méthode la plus simple consiste à modifier la ligne bind_address, définie par défaut sur 127.0.0.1, et à la remplacer par l'IP MariaDB dans le fichier de configuration /etc/mysql/mariadb.conf.d/50-server.cnf :

sudo vi /etc/mysql/mariadb.conf.d/50-server.cnf

avant :

bind-address            = 127.0.0.1

après :

bind-address            = <MARIADB_ADDRESS>

Où <MARIADB_ADDRESS> est l'adresse IP du réseau privé de l'instance MariaDB (dans notre exemple 10.0.64.51).

Redémarrez ensuite MariaDB :

sudo service mariadb restart

Puis essayez de vous connecter à MariaDB en utilisant cette interface :

mysql -h`<MARIADB_ADDRESS>` -u wordpress_user -pa_strong_password

Dans notre exemple :

ubuntu@b2-7-gra11:~$ mysql -h10.0.64.51 -u wordpress_user -pa_strong_password
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 30
Server version: 10.5.13-MariaDB-0ubuntu0.21.10.1 Ubuntu 21.10

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| wordpress_db       |
+--------------------+
2 rows in set (0.001 sec)

MariaDB [(none)]> 

Accéder à l'instance MariaDB depuis le cluster Managed Kubernetes

Pour vérifier que le vRack fonctionne correctement, testons si nous pouvons accéder à l'instance MariaDB depuis le cluster Managed Kubernetes via le vRack.

Nous allons déployer un client MySQL dans le cluster Kubernetes, qui se connectera à l'instance MariaDB en passant par le vRack. N'oubliez pas de remplacer <MARIADB_ADDRESS> par l'adresse IP du réseau privé de l'instance MariaDB (dans notre exemple 10.0.64.51).

Accédez à votre cluster Kubernetes en cours d'exécution (vous devez au préalable avoir récupéré le fichier kubeconfig et configuré votre variable d'environnement KUBECONFIG) :

$ echo $KUBECONFIG
/Users/<YOUR_USER>/.kube/my-cluster-vrack.yml

$ kubectx kubernetes-admin@my-cluster-vrack
Switched to context "kubernetes-admin@my-cluster-vrack".

$ kubectl get nodes
NAME                                         STATUS   ROLES    AGE   VERSION
nodepool-59d0ba5f-2fce-4a47-89-node-05134b   Ready    <none>   18h   v1.34.0
nodepool-59d0ba5f-2fce-4a47-89-node-46cbc9   Ready    <none>   17h   v1.34.0
nodepool-59d0ba5f-2fce-4a47-89-node-ea4d0a   Ready    <none>   18h   v1.34.0

Puis exécutez la commande suivante :

kubectl run -it --rm --image=mysql:5.6 --restart=Never mysql-client -- mysql -h <MARIADB_ADDRESS> -uwordpress_user  -pa_strong_password
$ kubectl run -it --rm --image=mysql:5.6 --restart=Never mysql-client -- mysql -h 10.0.64.51 -uwordpress_user  -pa_strong_password
If you don't see a command prompt, try pressing enter.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| wordpress_db       |
+--------------------+
2 rows in set (0.00 sec)

mysql> exit
Bye
pod "mysql-client" deleted

Configurer WordPress

Maintenant que la base de données est configurée, nous pouvons déployer WordPress sur le cluster Kubernetes. Nous suivons un processus similaire à celui de notre tutoriel Installer WordPress, en l'adaptant pour utiliser une base de données externe.

Prérequis

L'équipe OVHcloud Managed Kubernetes Service travaille sur un correctif prévu pour début 2022. Dans l'intervalle, veuillez supprimer la StorageClass par défaut et installer la nouvelle.

  • Supprimez la StorageClass concernée que vous utilisez par défaut
kubectl delete storageclasses.storage.k8s.io csi-cinder-high-speed

Cela supprimera la StorageClass existante :

$ kubectl delete storageclasses.storage.k8s.io csi-cinder-high-speed
storageclass.storage.k8s.io "csi-cinder-high-speed" deleted
  • Créez une nouvelle StorageClass avec le correctif requis
kubectl apply -f https://raw.githubusercontent.com/ovh/docs/develop/pages/public_cloud/containers_orchestration/managed_kubernetes/fix-persistent-volumes-permissions/files/fixed-cinder-high-speed-storage-class.yaml

Cela applique le manifeste YAML StorageClass correct :

$ kubectl apply -f https://raw.githubusercontent.com/ovh/docs/develop/pages/public_cloud/containers_orchestration/managed_kubernetes/fix-persistent-volumes-permissions/files/fixed-cinder-high-speed-storage-class.yaml
storageclass.storage.k8s.io/csi-cinder-high-speed created

Utiliser le chart Helm WordPress

Pour ce tutoriel, nous utilisons le chart Helm WordPress disponible sur le dépôt Bitnami. Ce chart est entièrement configurable, mais nous n'aurons besoin d'ajuster que les paramètres de la base de données externe :

mariadb.enabled
externalDatabase.host
externalDatabase.user
externalDatabase.password
externalDatabase.database
externalDatabase.port

Pour externalDatabase.host, nous devrons utiliser l'adresse IP du réseau privé de l'instance MariaDB, notée lors de la création de la PCI.

helm install my-first-k8s-wordpress bitnami/wordpress --set mariadb.enabled=false,externalDatabase.host=`<MARIADB_ADDRESS>`,externalDatabase.user=wordpress_user,externalDatabase.password=a_strong_password,externalDatabase.database=wordpress_db,externalDatabase.port=3306 

N'oubliez pas de remplacer <MARIADB_ADDRESS> par l'adresse IP du réseau privé de l'instance MariaDB (dans notre exemple 10.0.64.51).

$ helm install my-first-k8s-wordpress bitnami/wordpress --set mariadb.enabled=false,externalDatabase.host=10.0.64.51,externalDatabase.user=wordpress_user,externalDatabase.password=a_strong_password,externalDatabase.database=wordpress_db,externalDatabase.port=3306
NAME: my-first-k8s-wordpress
LAST DEPLOYED: Tue Dec 21 10:30:26 2021
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
CHART NAME: wordpress
CHART VERSION: 12.2.7
APP VERSION: 5.8.2

** Please be patient while the chart is being deployed **

Your WordPress site can be accessed through the following DNS name from within your cluster:

    my-first-k8s-wordpress.default.svc.cluster.local (port 80)

To access your WordPress site from outside the cluster follow the steps below:

1. Get the WordPress URL by running these commands:

  NOTE: It may take a few minutes for the LoadBalancer IP to be available.
        Watch the status with: 'kubectl get svc --namespace default -w my-first-k8s-wordpress'

   export SERVICE_IP=$(kubectl get svc --namespace default my-first-k8s-wordpress --template "{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}")
   echo "WordPress URL: http://$SERVICE_IP/"
   echo "WordPress Admin URL: http://$SERVICE_IP/admin"

2. Open a browser and access WordPress using the obtained URL.

3. Login with the following credentials below to see your blog:

  echo Username: user
  echo Password: $(kubectl get secret --namespace default my-first-k8s-wordpress -o jsonpath="{.data.wordpress-password}" | base64 --decode)

Attendez d'obtenir une IP externe :

kubectl get svc --namespace default my-first-k8s-wordpress -w
$ kubectl get svc --namespace default my-first-k8s-wordpress -w
NAME                     TYPE           CLUSTER-IP   EXTERNAL-IP   PORT(S)                      AGE
my-first-k8s-wordpress   LoadBalancer   10.3.7.60    <pending>     80:30158/TCP,443:32715/TCP   61s
my-first-k8s-wordpress   LoadBalancer   10.3.7.60    152.228.251.29   80:30158/TCP,443:32715/TCP   69s

Nous pouvons ensuite suivre les instructions pour obtenir l'URL d'administration :

export SERVICE_IP=$(kubectl get svc --namespace default my-first-k8s-wordpress --template "{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}")

$ echo "WordPress URL: http://$SERVICE_IP/"
WordPress URL: http://152.228.251.29/

$ echo "WordPress Admin URL: http://$SERVICE_IP/admin"
WordPress Admin URL: http://152.228.251.29/admin

En saisissant l'URL dans le navigateur, nous accédons au nouveau blog, qui accède à la base de données MariaDB de l'instance PCI via le vRack.

Configuration de WordPress

Aller plus loin

  • Pour une formation ou une assistance technique sur la mise en œuvre de nos solutions, contactez votre commercial ou consultez la page Professional Services pour obtenir un devis et faire analyser votre projet par nos experts.

  • Échangez avec notre communauté d'utilisateurs.

Cette page vous a-t-elle aidé ?