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/install-popeye.md.
Découvrez comment auditer votre cluster OVHcloud Managed Kubernetes avec Popeye et exporter le rapport généré vers un conteneur OVHcloud Object Storage
Objectif
Popeye est un outil qui analyse les clusters Kubernetes et signale les problèmes potentiels liés aux ressources et aux configurations déployées.
Il audite votre cluster en fonction de ce qui y est déployé. En analysant votre cluster, il détecte les erreurs de configuration et vous aide à vous assurer que les bonnes pratiques sont appliquées, ce qui évite des difficultés ultérieures. Son objectif est de réduire la charge cognitive liée à l'exploitation d'un cluster Kubernetes en conditions réelles.
Popeye signale également les sur-allocations et sous-allocations potentielles de ressources, et vous avertit lorsque votre cluster arrive à saturation.
Popeye analyse votre cluster afin d'y vérifier l'application des bonnes pratiques et d'y détecter les problèmes potentiels. Actuellement, Popeye examine les nodes, les namespaces, les pods et les services.
À titre d'information, Popeye est un outil en lecture seule : il se contente de récupérer des informations afin de vous aider à sécuriser et à auditer votre cluster. Il ne modifie ni ne supprime aucune ressource d'un cluster Kubernetes.
Chez OVHcloud, nous nous efforçons de vous proposer les meilleurs produits et services. La sécurité est importante pour nous : c'est pourquoi nous souhaitons vous faire découvrir Popeye, qui vous aidera à sécuriser votre cluster OVHcloud Managed Kubernetes grâce à des rapports détaillés.
Dans ce guide, vous allez :
installer Popeye (en local)
générer et exporter des rapports
corriger les problèmes courants
stocker un rapport sur OVHcloud Object Storage
Vous pouvez utiliser la fonction Réinitialiser le cluster de la section Public Cloud de votre afin de réinitialiser votre cluster avant de suivre ce tutoriel.
Prérequis
Ce tutoriel suppose que vous disposez déjà d'un cluster OVHcloud Managed Kubernetes fonctionnel et de connaissances de base sur son utilisation.
Suivez également la documentation « Déployer une application Hello World » afin de disposer d'un exemple d'application en cours d'exécution sur votre cluster.
Accès à l'espace client OVHcloud
Lien direct :
Pour accéder à vos services :Public Cloud > Sélectionnez votre projet > Utilisateurs & Rôles
À ce stade, vous devriez disposer d'un cluster Kubernetes en cours d'exécution, avec un déploiement et un pod hello-world semblables à ceci :
$ kubectl get po,deployNAME READY STATUS RESTARTS AGEpod/hello-world-deployment-66d599d4c6-bh5w8 1/1 Running 0 4d2hNAME READY UP-TO-DATE AVAILABLE AGEdeployment.apps/hello-world-deployment 1/1 1 1 4d22h
En pratique
Installation de la CLI Popeye
Vous pouvez installer Popeye sur votre poste depuis les binaires, depuis les sources, via HomeBrew, ou même l'utiliser directement depuis une image Docker.
Dans ce tutoriel, vous allez l'installer via HomeBrew :
brew install derailed/popeye/popeye
La sortie devrait ressembler à ceci :
$ brew install derailed/popeye/popeyeRunning `brew update --preinstall`......==> Tapping derailed/popeyeCloning into '/Users/avache/homebrew/Library/Taps/derailed/homebrew-popeye'...remote: Enumerating objects: 233, done.remote: Counting objects: 100% (104/104), done.remote: Compressing objects: 100% (52/52), done.remote: Total 233 (delta 25), reused 0 (delta 0), pack-reused 129Receiving objects: 100% (233/233), 25.13 KiB | 12.57 MiB/s, done.Resolving deltas: 100% (57/57), done.Tapped 1 formula (12 files, 37KB).==> Downloading https://github.com/derailed/popeye/releases/download/v0.10.0/popeye_Darwin_arm64.tar.gz==> Downloading from https://objects.githubusercontent.com/github-production-release-asset-2e65be/176379662/c65e86e0-4e3e-4591-9bb7-62b7bddd46e4?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJY######################################################################## 100.0%==> Installing popeye from derailed/popeye...==> Running `brew cleanup popeye`...Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
Après l'installation, vérifiez que la CLI popeye fonctionne correctement :
popeye version
Vous devriez obtenir un résultat semblable à celui-ci :
$ popeye version ___ ___ _____ _____ K .-'-.| _ \___| _ \ __\ \ / / __| 8 __| `\| _/ _ \ _/ _| \ V /| _| s `-,-`--._ `\|_| \___/_| |___| |_| |___| [] .->' a `|-' Biffs`em and Buffs`em! `=/ (__/_ / \_, ` _) `----; |Version: 0.10.0Commit: d1d807b721b0393e7b69e970bdf947895c61d8f4Date: 2022-04-14T15:51:42ZLogs: /var/folders/lq/xp6s4vbn13s5vj_kq3cch50w0000gn/T/popeye.log
Popeye est correctement installé sur votre poste. Vous pouvez maintenant l'utiliser pour vérifier si votre cluster respecte les bonnes pratiques de sécurité Kubernetes.
Générer des rapports Popeye
La CLI popeye fonctionne comme la commande kubectl : lorsque vous l'exécutez, elle recherche la configuration de votre cluster.
Pour générer un rapport, il suffit d'exécuter la CLI :
popeye
Par défaut, cette commande exécute des tests sur tous les nœuds et tous les namespaces :
Comme vous pouvez le constater, par défaut, notre cluster OVHcloud Managed Kubernetes (sur lequel une application hello world est déployée) obtient un score de 83.
Bien qu'il s'agisse d'un bon score, examinons ce qui peut être amélioré ou corrigé.
Le rapport peut être très volumineux. Pour identifier ce que vous devez améliorer ou corriger, une bonne pratique consiste à exécuter la commande popeye sur un namespace précis.
Vous pouvez ainsi améliorer et corriger les ressources de votre cluster étape par étape.
L'application hello world ayant été déployée dans le namespace default, vous pouvez exécuter popeye sur ce namespace et générer un rapport portant uniquement sur les deployments :
Exporter des rapports vers un conteneur OVHcloud Object Storage
Vous pouvez également exporter le rapport généré vers un conteneur OVHcloud Object Storage, car ceux-ci sont compatibles avec l'API S31. Le principe est celui d'un bucket AWS S3, mais sur l'infrastructure OVHcloud.
Vous devez d'abord disposer d'un conteneur Object Storage. Si vous n'en avez pas encore, vous pouvez suivre le guide « Premiers pas avec Object Storage Swift ».
Dans ce guide, notre conteneur Object Storage est nommé popeye et sa région est GRA. Vous pouvez vérifier et configurer le nom du conteneur dans l', dans la section Public Cloud > votre projet > Object Storage.
Créer un utilisateur OpenStack disposant des droits Object Storage
Pour stocker vos rapports Popeye sur un OVHcloud Object Storage — et plus généralement pour interagir avec l'Object Storage — vous devez disposer des droits nécessaires à sa gestion.
Pour cela, vous allez créer un utilisateur OpenStack.
Dans l', rendez-vous dans la section Public Cloud > votre projet, puis cliquez sur Utilisateurs & Rôles dans le menu de gauche.
Cliquez sur + Ajouter un utilisateur.
Saisissez une description pour l'utilisateur, par exemple Popeye, puis cliquez sur Suivant.
Cochez le rôle ObjectStore operator, puis cliquez sur Confirmer.
Patientez pendant la création de l'utilisateur. Le nom d'utilisateur et le mot de passe seront générés automatiquement et affichés dans l'espace client — veillez à enregistrer le mot de passe, car il ne sera affiché qu'une seule fois.
Récupérer le fichier RC d'OpenStack
Pour interagir avec l'Object Storage via l'API Amazon S3, vous devez générer vos identifiants OpenStack.
Dans la section Utilisateurs & Rôles, cliquez sur le menu ... situé à côté de l'utilisateur que vous venez de créer, puis sélectionnez Télécharger le fichier RC d'OpenStack.
Sélectionnez la région de votre conteneur Object Storage (GRA pour ce guide), puis cliquez sur Télécharger.
À cette étape, vous devriez disposer d'un fichier openrc.sh semblable à celui-ci :
cat openrc.sh
$ cat openrc.sh#!/bin/bash# To use an Openstack cloud you need to authenticate against keystone, which# returns a **Token** and **Service Catalog**. The catalog contains the# endpoint for all services the user/tenant has access to - including nova,# glance, keystone, swift.#export OS_AUTH_URL=https://auth.cloud.ovh.net/v3export OS_IDENTITY_API_VERSION=3export OS_USER_DOMAIN_NAME=${OS_USER_DOMAIN_NAME:-"Default"}export OS_PROJECT_DOMAIN_NAME=${OS_PROJECT_DOMAIN_NAME:-"Default"}# With the addition of Keystone we have standardized on the term **tenant**# as the entity that owns the resources.export OS_TENANT_ID=a123b456c789d901export OS_TENANT_NAME="11111111111"# In addition to the owning entity (tenant), openstack stores the entity# performing the action as the **user**.export OS_USERNAME="user-xxxxxxxx"# With Keystone you pass the keystone password.echo "Please enter your OpenStack Password: "read -sr OS_PASSWORD_INPUTexport OS_PASSWORD=$OS_PASSWORD_INPUT# If your configuration has multiple regions, we set that information here.# OS_REGION_NAME is optional and only valid in certain environments.export OS_REGION_NAME="GRA"# Don't leave a blank variable, unset it if it was emptyif [ -z "$OS_REGION_NAME" ]; then unset OS_REGION_NAME; fi
Sourcez le fichier openrc.sh afin de définir les variables d'environnement OpenStack :
source openrc.sh
Vous devez exécuter cette commande et saisir votre mot de passe :
$ source openrc.shPlease enter your OpenStack Password:
Installer les outils CLI
Vous devez maintenant installer les outils CLI :
pip install python-openstackclient awscli
Cette commande installe le client openstack, qui permet de générer vos identifiants, ainsi que la CLI aws :
$ pip install python-openstackclient awscliDEPRECATION: Configuring installation scheme with distutils config files is deprecated and will no longer work in the near future. If you are using a Homebrew or Linuxbrew Python, please see discussion at https://github.com/Homebrew/homebrew-core/issues/76621Collecting python-openstackclient Using cached python_openstackclient-5.7.0-py3-none-any.whl (970 kB)Collecting awscli Using cached awscli-1.22.54-py3-none-any.whl (3.8 MB)...Successfully installed PrettyTable-3.1.0 PyYAML-5.4.1 appdirs-1.4.4 attrs-21.4.0 autopage-0.5.0 awscli-1.22.54 botocore-1.23.54 certifi-2021.10.8 cffi-1.15.0 charset-normalizer-2.0.12 cliff-3.10.0 cmd2-2.3.3 colorama-0.4.3 cryptography-36.0.1 debtcollector-2.4.0 decorator-5.1.1 docutils-0.15.2 dogpile.cache-1.1.5 idna-3.3 iso8601-1.0.2 jmespath-0.10.0 jsonpatch-1.32 jsonpointer-2.2 keystoneauth1-4.4.0 msgpack-1.0.3 munch-2.5.0 netaddr-0.8.0 netifaces-0.11.0 openstacksdk-0.61.0 os-service-types-1.7.0 osc-lib-2.4.2 oslo.config-8.7.1 oslo.i18n-5.1.0 oslo.serialization-4.2.0 oslo.utils-4.12.1 packaging-21.3 pbr-5.8.1 pyasn1-0.4.8 pycparser-2.21 pyparsing-3.0.7 pyperclip-1.8.2 python-cinderclient-8.2.0 python-dateutil-2.8.2 python-keystoneclient-4.4.0 python-novaclient-17.6.0 python-openstackclient-5.7.0 pytz-2021.3 requests-2.27.1 requestsexceptions-1.4.0 rfc3986-2.0.0 rsa-4.7.2 s3transfer-0.5.1 simplejson-3.17.6 stevedore-3.5.0 urllib3-1.26.8 wcwidth-0.2.5 wrapt-1.13.3
mkdir ~/.aws
Créez le fichier de configuration de la CLI AWS et définissez le bon endpoint vers votre Object Storage stocké dans la région GRA :
Vous pouvez maintenant tester le listage de vos conteneurs Object Storage existants via la CLI aws s3 :
aws s3 ls
Vous devriez retrouver au minimum le conteneur/bucket popeye dans la liste suivante :
$ aws s3 ls2009-02-03 17:45:09 popeye
Stocker un rapport Popeye dans votre Object Storage
Vous pouvez désormais générer un rapport Popeye et l'enregistrer dans votre conteneur Object Storage grâce aux options --s3-bucket, --s3-region et --s3-endpoint :
Vous pouvez vérifier dans votre conteneur OVHcloud Object Storage popeye que le rapport a bien été enregistré :
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.
1 : S3 est une marque déposée appartenant à Amazon Technologies, Inc. Les services OVHcloud ne sont pas sponsorisés, approuvés, ou affiliés de quelque manière que ce soit.