diff --git a/docs/.vitepress/sidebar.json b/docs/.vitepress/sidebar.json index 9d58708..779ce7a 100644 --- a/docs/.vitepress/sidebar.json +++ b/docs/.vitepress/sidebar.json @@ -19,14 +19,6 @@ "text": "Bouchons", "link": "/agreement/mocks" }, - { - "text": "Règles kyverno", - "link": "/agreement/kyverno" - }, - { - "text": "Labels kubernetes", - "link": "/agreement/labels-list" - }, { "text": "Observabilité", "link": "/agreement/observability" @@ -147,6 +139,10 @@ "text": "Déploiement de votre application", "link": "/guide/deployment-with-argo" }, + { + "text": "Règles kyverno", + "link": "/agreement/kyverno" + }, { "text": "Bonnes pratiques", "link": "/guide/best-practices" @@ -173,6 +169,10 @@ } ] }, + { + "text": "Dashboard", + "link": "/guide/dashboardsecurite" + }, { "text": "Archivage des logs", "link": "/guide/archive-logs" diff --git a/docs/agreement/faq.md b/docs/agreement/faq.md index 093d72c..9783c73 100644 --- a/docs/agreement/faq.md +++ b/docs/agreement/faq.md @@ -4,7 +4,7 @@ Cette section regroupe les questions fréquentes de nos clients. ## Construction -### Comment simuler les services S3, SSO, SMTP, etc sur les environnements OVH ? +### Comment simuler les services S3, SSO, SMTP, etc sur les environnements PAX ? Des bouchons sont proposés afin de simuler un serveur SMTP, création d'un bucket S3, SSO, etc. diff --git a/docs/agreement/introduction.md b/docs/agreement/introduction.md index dfcf599..ae39674 100644 --- a/docs/agreement/introduction.md +++ b/docs/agreement/introduction.md @@ -1,7 +1,7 @@ # L'offre Cloud Pi Native -La direction de la transformation numérique du ministère de l'Intérieur et des outre-mer propose une offre de services autour de deux instances de la plateforme *(OVH SecNumCloud / Cloud π)* à destination des *administrations* ou des *entreprises de services numériques* travaillant pour leur compte. -Cette offre de services est une implémentation du produit *Hexaforge* pour le ministère de l'intérieur ainsi qu'un accompagnement dédié aux spécificités des infrastructures ministérielles. +La Direction de la Transformation Numérique du Ministère de l'Intérieur et des Outre-mer propose une offre de services autours de plusieurs instances de la plateforme *(PAX / Cloud π)* à destination des *administrations* ou des *entreprises de services numériques* travaillant pour leur compte. +Cette offre de services est une implémentation du produit *Hexaforge* pour le Ministère de l'intérieur ainsi qu'un accompagment dédié aux spécificités des infrastructures ministériel. > __:warning: Attention, les seuls bénéficiaires de cette offre managée sont les administrations ou leurs ESN partenaires. diff --git a/docs/agreement/mocks.md b/docs/agreement/mocks.md index e353201..8647d09 100644 --- a/docs/agreement/mocks.md +++ b/docs/agreement/mocks.md @@ -112,7 +112,7 @@ smtp: podLabels: app: bouchon-smtp - env: ovh + env: pax tier: bouchon criticality: low component: smtp diff --git a/docs/agreement/observability.md b/docs/agreement/observability.md index 1b621eb..83199f2 100644 --- a/docs/agreement/observability.md +++ b/docs/agreement/observability.md @@ -1,13 +1,12 @@ # Observabilité -> __:warning: L'observabilité n'est pas en place sur les environnements OVH.__ Dans le cadre de l'offre Cloud-Pi Native, l'observabilité est disponible via plusieurs composants: -- Prometheus/Grafana pour les métriques -- AlertManager/Grafana pour l'alerting -- ElasticSearch/Kibana pour les logs +- Prometheus pour les métriques et les dashboards de sécurité +- Loki pour les logs +- Grafana pour les dashboard et les alertes -Ces différents services sont accessibles via la console `Cloud Pi Native > Projet > Mes Projets > Sélectionner un projet > Mes Services` +Ces différents services sont accessibles via la console `Cloud Pi Native > Projet > Mes Projets > Sélectionner un projet > Services externes` ![observabilité](/img/agreement/acces_services_observabilité.png) @@ -25,17 +24,62 @@ Par défaut, aucune alerte n'est mise en place. Pour apprendre à créer une alerte, [cliquer ici](/guide/alerting.md) +## Dashboard +Des dashboards [Grafana](https://grafana.com/grafana/) pour consulter les métriques, les logs ainsi que des indicateurs de sécurité sont fournis par défaut pour son projet : + +![dashboard par defaut](/img/agreement/dashboard-defaut.png) + +Pour consulter les dashboard de sécurité, [cliquer ici](/guide/dashboardsecurite.md) + + +## Dashboard as code + +À partir de la version 9.4.0 de la console, une fonctionnalité *Dashboard as code* est disponible. + +Lors de la création d'un projet (ou lors du reprovisionnement d'un projet pour les projets créés avant la version 9.4.0 de la console), un nouveau repo de code est automatiquement créé dans gitlab : infra-observability + +![repo infra-observability](/img/agreement/repo-infra-observability.png) + +Ce repo de code contient 2 types de fichiers : + - Des Dashboard grafana sous forme de fichiers .json dans le répertoire "/files/dashboards/" + - Des alertes sous la forme de fichiers .yaml.tpl dans le répertoire /files/rules/ + +L'ajout de fichier dans ces répertoires sont automatiquements déployés dans grafana (peut prendre jusqu'à 3 minutes pour se synchroniser). + +Afin de sauvegarder un dashboard dans Cloud Pi Native, il est nécessaire d'exporter le contenu JSON d'un dashboard depuis Grafana puis de copier le contenu dans un fichier /files/dashboards/mondashboard.json. + +Pour cela depuis un dashboard cliquez sur *share* : +![share](/img/agreement/dashboard-share.png) + +Puis *Export* et *View JSON* +![export](/img/agreement/dashboard-export-view-json.png) + +Enfin cliquez sur Copy to Clipboard +![copy](/img/agreement/dashboard-copy-to-clipboard.png) + +La synchronisation du repo de code gitlab *infra-observability* vers *Grafana* se fait via une *Application ArgoCD* nommée [env]-[projet]-observability : +![argo](/img/agreement/argocd-dashboard-as-code.png) + +Un objet de type Kubernetes *GrafanaDashboard* est créé pour chaque dashboard créé *as code*. En cas d'erreur sur le contenu du JSON, les erreurs seront visibles depuis cet objet via ArgoCD. + +> À noter que seule la branche **main** est synchronisée + + +La video suivante illustre cette fonctionnalité + + + ## Logs -Le couple Elastisearch/Kibana est utilisé pour vous donner accès à vos logs. +Le couple Loki/Grafana est utilisé pour vous donner accès à vos logs. -> __:warning: Les logs ne sont conservés que sur une durée de 7 jours.__ +> __:warning: Les logs ne sont conservés que sur une durée de 30 jours.__ -Pour les besoins de conservation au delà de 7 jours, le projet doit mettre en place un collecteur de logs (rsyslog, fluentbit, fluentd, vector, kafka, ...) dans le périmètre de son application afin de récupérer le flux de logs et les stockés sur un autre support (S3 par exemple) +Pour les besoins de conservation au delà de 30 jours, le projet doit mettre en place un collecteur de logs (rsyslog, fluentbit, fluentd, vector, kafka, ...) dans le périmètre de son application afin de récupérer le flux de logs et les stockés sur un autre support (S3 par exemple) Les logs peuvent être transmises via le protocol HTTP, syslog ou vers un kafka. Pour bénéficier de ce service, merci de créer un ticket auprès de la ServiceTeam. -Pour apprendre à utiliser kibana, [cliquer ici](/guide/logs-kibana.md) - Un exemple de mise en place d'un collecteur de log avec le produit [vector](https://vector.dev/) vers un bucket AWS S3 est disponible [ici](/guide/archive-logs.md) diff --git a/docs/agreement/support.md b/docs/agreement/support.md index 352eb4f..04cbb78 100644 --- a/docs/agreement/support.md +++ b/docs/agreement/support.md @@ -6,8 +6,8 @@ La Service Team est l'équipe qui vous accompagne pour embarquer sur l'offre Clo L'accompagnement technique se fera sur 2 plateformes : -- Plateforme d'accélération OVH; plateforme non liée aux réseaux interministères et a pour objectif de fournir aux projets un accès plus rapide à la console et aux services Cloud π native. Ainsi les projets peuvent anticiper en effectuant leurs premiers tests. - +- Plateforme PAX; plateforme non lié aux réseaux interministères et a pour objectif de fournir aux projets un accès plus rapide à la console et aux services Cloud π native. Ainsi les projets peuvent anticiper en effectuat leurs premiers tests. + - Cluster Cloud π native sur les infrastructures du ministère de l'intérieur ## Prérequis organisationnels @@ -36,7 +36,7 @@ En plus de ces prérequis, les éléments suivants sont à fournir par le projet - Estimation des ressources nécessaires CPU/RAM - Calendrier du projet et échéances importantes et état d'avancement du projet (déjà en production, nouvelle application, etc.) -## Accompagnement sur OVH +## Accompagnement sur PAX - Création de compte pour l'accès à la console et aux services - Accostage entre la chaine primaire et la chaine secondaire (github action) diff --git a/docs/guide/best-practices.md b/docs/guide/best-practices.md index 33eb2f3..f5935c3 100644 --- a/docs/guide/best-practices.md +++ b/docs/guide/best-practices.md @@ -67,7 +67,81 @@ Criticality : " " Component : " " ``` -Tous les labels disponibles [ici](/agreement/labels-list). +Dans le cadre de l'offre de services du MIOM, il sera demandé d'ajouter les labels suivants sur vos ressources kubernetes : + +### Type d'environnement + +Ajouter un label `env: ` où `element` est un élément de la liste suivante : + +- dev +- formation +- qualif +- test +- preprod +- prod + +### Tiers + +Ajouter un label `tier: ` où `element` est un élément de la liste suivante : + +- frontend +- backend +- db +- cache +- auth + +### Criticité + +Ajouter un label `criticality: ` où `element` est un élément de la liste suivante : + +- high +- medium +- low + +### Composant + +Ajouter un label `component: ` où `element` est un élément de la liste suivante : + +- web : + - nginx + - apache + - caddy + - tomcat + +- defaults : + - python + - node + - openjdk + - golang + - php + - ruby + - perl + - drupal + - java + +- database : + - postgres + - mariadb + - mysql + - mongo + - cassandra + - cockroach + - influx + - etcd + +- caching : + - varnish + - redis + - memcached + +- broker : + - rabbitmq + - kafka + - apachemq + - kubemq + +- others : + - busybox ## Tag d'images diff --git a/docs/guide/dashboardsecurite.md b/docs/guide/dashboardsecurite.md new file mode 100644 index 0000000..59df944 --- /dev/null +++ b/docs/guide/dashboardsecurite.md @@ -0,0 +1,30 @@ +# Dasboard Sécurité + +Retrouver ce service dans la console Cloud Pi via le menu `Projet > Mes Projets > Sélectionner un projet > Mes Services` et cliquer sur l'icône Grafana correspondant au cluster sur lequel votre déploiement applicatif est présent. + +Dans cette section, nous allons découvrir comment créer un nouveau dashboard contenant un graphique. + +## Connexion +Pour visualiser vos métriques, sélectionner Grafana dans le tableau de bord "Mes Services". + +Pour se logguer, cliquer sur le bouton en bas de page commençant par "Sign in with..." + +![signin](/img/guide/grafana-sign-in.png) + +Une fois connecté, l'accès aux dashboards est disponible via la menu hamburger en haut à gauche + +![menu](/img/guide/grafana_menu.png) +![menu dashboard](/img/guide/grafana_menu_dashboard.png) + +Par défaut, les équipes de Cloud Pi Native ont prévu un dashboard reprenant les informations d'infrastructure (CPU/RAM/Quota/Réseaux/Stockage) de vos différents namespace ainsi que des dashboard de sécurité Kyverno/Trivy/Falco + +![dashboard_infra](/img/guide/dashboard_infra.png) + +### Kyverno +Le dashboard [PolicyReport](/img/guide/kyverno.png) remonte les informations l'état de la conformité des règles Kyverno. La consultation permet d'avoir le détail du nombre de règles respecté ou non ainsi que les règles en question. + +### Trivy +Le dashboard [Trivy Operator](/img/guide/trivy_dashboard.png) permet de consulter les vulnérabilités (CVE) et criticité pour les différentes workload ainsi que leur évolution dans le temps. + +### Falco +Le Falco dashboard permet d'avoir une vision au runtime des activités anormales (Lancement d'un shell dans un container, etc ...). \ No newline at end of file diff --git a/docs/guide/logs-kibana.md b/docs/guide/logs-kibana.md deleted file mode 100644 index 9eee89a..0000000 --- a/docs/guide/logs-kibana.md +++ /dev/null @@ -1,57 +0,0 @@ -# Logs - -Retrouver ce service dans la console Cloud Pi via le menu `Projet > Mes Projets > Sélectionner un projet > Mes Services` et cliquer sur l'icône Kibana qui vous intéresse. - -## Connexion -Pour visualiser vos logs, sélectionner Kibana dans le tableau de bord "Mes Services". - -Pour se logguer, cliquer sur le bouton `dso-client` - -![login](/img/guide/kibana/log-in.png) - -*Les prochaines étapes ne seront à faire qu'une seule fois* - -- Kibana va demander l'autorisation d'accéder à des ressources, cocher tout et cliquer sur `Allow selected permissions` -![authorize](/img/guide/kibana/authorize.png) - -- Kibana va s'ouvrir sur une page de création d'index, aucun n'étant pré-paramétré. -Remplir la zone de texte avec `app-*` pour sélectionner tous les index présents et futurs puis cliquer sur le bouton `> Next step` -![create_index_pattern](/img/guide/kibana/create_index_pattern.png) - -Kibana va demander quel champ utiliser pour la date, choisir `@timestamp` dans la liste déroulante puis cliquer sur le bouton `Create index pattern` -![create_index_timestamp](/img/guide/kibana/create_index_timestamp.png) - -Félicitations, vous venez de créer votre premier index Kibana et allez pouvoir dès à présent découvrir et filtrer vos logs -![create_index_valid](/img/guide/kibana/create_index_valid.png) - -## Explorer vos logs -Pour explorer et requêter vos logs, allez sur l'onglet `Discover` -![discover](/img/guide/kibana/discover.png) - -Cette page se décompose en plusieurs partie détaillées ci-dessous: - -En haut, les options concernant la plage de temps (pour rappel, seulement 7 jours de logs sont disponibles) et l'auto-refresh -![discover_time](/img/guide/kibana/discover_time.png) - ---- -Juste en dessous, la zone de requête, avec comme exemple les lignes de logs dont le nom du container est `pgrest-tcnp` et le message (aka la sortie console des containers) contient le mot `WAF`. -Cliquer sur le bouton `Refresh` pour obtenir le résultat de la requête. -![discover_query](/img/guide/kibana/discover_query.png) - ---- -A gauche se trouve les champs requêtables (ceux trouvés dans l'index créé à l'étape précédente) -![discover_available_fields](/img/guide/kibana/discover_available_fields.png) - ---- -A droite se trouve les résultats avec un graphique reprenant la disparité des lignes de logs selon la date. - -En en dessous, les logs correspondants à la recherche (avec les critères surlignés). - -*A noter qu'il est possible de déplier les résultats en cliquant sur la flèche à côté de la date* - -![discover_results](/img/guide/kibana/discover_results.png) - -## Aller plus loin -La documentation de Kibana se trouve [ici](https://www.elastic.co/guide/en/kibana/6.8/index.html) - -Plus d'informations concernant la syntaxe de requêtage [ici](https://www.elastic.co/guide/en/kibana/6.8/kuery-query.html) diff --git "a/docs/public/img/agreement/acces_services_observabilit\303\251.png" "b/docs/public/img/agreement/acces_services_observabilit\303\251.png" index cbc7e77..8ed240b 100644 Binary files "a/docs/public/img/agreement/acces_services_observabilit\303\251.png" and "b/docs/public/img/agreement/acces_services_observabilit\303\251.png" differ diff --git a/docs/public/img/agreement/argocd-dashboard-as-code.png b/docs/public/img/agreement/argocd-dashboard-as-code.png new file mode 100644 index 0000000..411445f Binary files /dev/null and b/docs/public/img/agreement/argocd-dashboard-as-code.png differ diff --git a/docs/public/img/agreement/dashboard-copy-to-clipboard.png b/docs/public/img/agreement/dashboard-copy-to-clipboard.png new file mode 100644 index 0000000..239c797 Binary files /dev/null and b/docs/public/img/agreement/dashboard-copy-to-clipboard.png differ diff --git a/docs/public/img/agreement/dashboard-defaut.png b/docs/public/img/agreement/dashboard-defaut.png new file mode 100644 index 0000000..3271da7 Binary files /dev/null and b/docs/public/img/agreement/dashboard-defaut.png differ diff --git a/docs/public/img/agreement/dashboard-export-view-json.png b/docs/public/img/agreement/dashboard-export-view-json.png new file mode 100644 index 0000000..d9d3eb0 Binary files /dev/null and b/docs/public/img/agreement/dashboard-export-view-json.png differ diff --git a/docs/public/img/agreement/dashboard-share.png b/docs/public/img/agreement/dashboard-share.png new file mode 100644 index 0000000..c3417c3 Binary files /dev/null and b/docs/public/img/agreement/dashboard-share.png differ diff --git a/docs/public/img/agreement/repo-infra-observability.png b/docs/public/img/agreement/repo-infra-observability.png new file mode 100644 index 0000000..44ef675 Binary files /dev/null and b/docs/public/img/agreement/repo-infra-observability.png differ diff --git a/docs/public/img/guide/dashboard_infra.png b/docs/public/img/guide/dashboard_infra.png index 0701e41..3f542ee 100644 Binary files a/docs/public/img/guide/dashboard_infra.png and b/docs/public/img/guide/dashboard_infra.png differ diff --git a/docs/public/img/guide/kyverno_dashboard.png b/docs/public/img/guide/kyverno_dashboard.png new file mode 100644 index 0000000..289540d Binary files /dev/null and b/docs/public/img/guide/kyverno_dashboard.png differ diff --git a/docs/public/img/guide/trivy_dashboard.png b/docs/public/img/guide/trivy_dashboard.png new file mode 100644 index 0000000..6ac12f6 Binary files /dev/null and b/docs/public/img/guide/trivy_dashboard.png differ