{"id":19251,"date":"2021-03-09T12:14:24","date_gmt":"2021-03-09T17:14:24","guid":{"rendered":"https:\/\/canarie.machinedev.ca\/?page_id=19251"},"modified":"2024-10-30T09:48:16","modified_gmt":"2024-10-30T13:48:16","slug":"solution-type-trousse-dautomatisation-kubernetes-kat","status":"publish","type":"page","link":"https:\/\/www.canarie.ca\/fr\/catalogue\/plan-de-vol-ido-automatisation-de-lorchestration-en-nuage-avec-kubernetes\/solution-type-trousse-dautomatisation-kubernetes-kat\/","title":{"rendered":"Solution type: Kubernetes Automation Toolkit (KAT)"},"content":{"rendered":"\n<section class=\"section section--banner simple-fade light-blue alignfull\">\n  <div class=\"grid-container text-center\">\n  \t\t  \t\t  \t  <div class=\"large\"><p><span class=\"TextRun SCXW20856404 BCX0\" lang=\"EN-CA\" xml:lang=\"EN-CA\" data-contrast=\"none\"><span class=\"NormalTextRun SCXW20856404 BCX0\">Bien que le programme ATIR <\/span><span class=\"NormalTextRun SpellingErrorV2Themed SCXW20856404 BCX0\">n\u2019accepte<\/span><span class=\"NormalTextRun SCXW20856404 BCX0\"> plus les <\/span><span class=\"NormalTextRun SpellingErrorV2Themed SCXW20856404 BCX0\">demandes<\/span><span class=\"NormalTextRun SCXW20856404 BCX0\"> pour les <\/span><span class=\"NormalTextRun SpellingErrorV2Themed SCXW20856404 BCX0\">ressources<\/span> <span class=\"NormalTextRun SpellingErrorV2Themed SCXW20856404 BCX0\">en<\/span> <span class=\"NormalTextRun SpellingErrorV2Themed SCXW20856404 BCX0\">nuage<\/span><span class=\"NormalTextRun SCXW20856404 BCX0\">, <\/span><span class=\"NormalTextRun SpellingErrorV2Themed SCXW20856404 BCX0\">vous<\/span> <span class=\"NormalTextRun SpellingErrorV2Themed SCXW20856404 BCX0\">avez<\/span> <span class=\"NormalTextRun SpellingErrorV2Themed SCXW20856404 BCX0\">toujours<\/span> <span class=\"NormalTextRun SpellingErrorV2Themed SCXW20856404 BCX0\">acc\u00e8s<\/span><span class=\"NormalTextRun SCXW20856404 BCX0\"> aux <\/span><span class=\"NormalTextRun SpellingErrorV2Themed SCXW20856404 BCX0\">Propulseurs<\/span><span class=\"NormalTextRun SCXW20856404 BCX0\"> et \u00e0 <\/span><span class=\"NormalTextRun SpellingErrorV2Themed SCXW20856404 BCX0\">leur<\/span><span class=\"NormalTextRun SCXW20856404 BCX0\"> documentation, qui <\/span><span class=\"NormalTextRun SpellingErrorV2Themed SCXW20856404 BCX0\">seront<\/span> <span class=\"NormalTextRun SpellingErrorV2Themed SCXW20856404 BCX0\">pr\u00e9serv\u00e9s<\/span><span class=\"NormalTextRun SCXW20856404 BCX0\"> et <\/span><span class=\"NormalTextRun SpellingErrorV2Themed SCXW20856404 BCX0\">b\u00e9n\u00e9ficieront<\/span><span class=\"NormalTextRun SCXW20856404 BCX0\"> d\u2019un <\/span><span class=\"NormalTextRun SpellingErrorV2Themed SCXW20856404 BCX0\">soutien<\/span> <span class=\"NormalTextRun SpellingErrorV2Themed SCXW20856404 BCX0\">jusqu\u2019au<\/span><strong><span class=\"NormalTextRun SCXW20856404 BCX0\"> 17 <\/span><span class=\"NormalTextRun SpellingErrorV2Themed SCXW20856404 BCX0\">janvier<\/span><span class=\"NormalTextRun SCXW20856404 BCX0\"> 2025.<\/span><\/strong><\/span><strong><span class=\"EOP SCXW20856404 BCX0\" data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;335551550&quot;:0,&quot;335551620&quot;:0,&quot;335559738&quot;:240,&quot;335559739&quot;:240}\">\u00a0<\/span><\/strong><\/p>\n<\/div>\n\t  \t  \t\t  <\/div>\n<\/section>\n\n\n\n<section class=\"section section--text-columns no-background\">\n    <div class=\"grid-container\">\n      <div class=\"grid-x grid-padding-x\">\n        <div class=\"cell\">\n                  \t<h3>Apr\u00e8s le 17 janvier 2025:\u00a0<\/h3>\n                    <ul>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"4\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559683&quot;:0,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" aria-setsize=\"-1\" data-aria-posinset=\"1\" data-aria-level=\"1\"><span data-contrast=\"none\">Les saisies d\u2019\u00e9cran devraient rester fid\u00e8les, mais au lieu de vous connecter \u00e0 votre compte ATIR dans AWS quand on vous le demande, vous devrez vous connecter \u00e0 un compte AWS personnel.<\/span><span data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;335551550&quot;:0,&quot;335551620&quot;:0,&quot;335559738&quot;:240,&quot;335559739&quot;:240}\">\u00a0<\/span><\/li>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"4\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559683&quot;:0,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" aria-setsize=\"-1\" data-aria-posinset=\"1\" data-aria-level=\"1\"><span data-contrast=\"none\">Les liens vers les scripts CloudFormation d\u2019AWS permettant le d\u00e9ploiement automatique de l\u2019application type devraient rester les m\u00eames et \u00eatre fonctionnels.<\/span><\/li>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"4\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559683&quot;:0,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" aria-setsize=\"-1\" data-aria-posinset=\"1\" data-aria-level=\"1\"><span data-contrast=\"none\">Les liens vers les d\u00e9p\u00f4ts GitHub permettant de t\u00e9l\u00e9charger le code source du Propulseur resteront valables puisque c\u2019est le cr\u00e9ateur du Propulseur (celui qui a \u00e9labor\u00e9 les applications de source ouverte servant d\u2019exemple) qui en est le propri\u00e9taire et en assure le maintien.<\/span><span data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;335551550&quot;:0,&quot;335551620&quot;:0,&quot;335559738&quot;:240,&quot;335559739&quot;:240}\">\u00a0<\/span><\/li>\n<\/ul>\n                  <\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n\n\n<section class=\"section section--text-with-image  alignfull full-width grey \">\n    <div class=\"grid-container simple-fade\">\n    <div class=\"grid-x grid-padding-x align-middle\">\n      <div class=\"cell large-6 medium-order-2\">\n\t\t  \t\t\t  <div class=\"full-width-img\" style=\"background-image: url(https:\/\/www.canarie.ca\/wp-content\/uploads\/2021\/02\/BAIR_BP_Builders_bigbitbus.png); background-size: cover; background-position: center center;\"><\/div>\n\t\t\t  <div class=\"image-mask\"><\/div>\n\t\t        <\/div>\n      <div class=\"cell large-6 medium-order-1 text-left text-cell light\">\n  \t\t                          <div class=\"fade-in-delay text-cell-text\"><h1>Automatisation de l\u2019orchestration en nuage avec Kubernetes<\/h1>\n<p>Si ce n\u2019est d\u00e9j\u00e0 fait, lisez le Plan de vol du Propulseur KAT de BigBitBus,\u00a0<a href=\"https:\/\/www.canarie.ca\/fr\/nuage\/propulseurs\/catalogue\/plan-de-vol-ido-automatisation-de-lorchestration-en-nuage-avec-kubernetes\/\">Automatisation de l\u2019orchestration dans le nuage avec Kubernetes<\/a>, avant de tester la solution type.<\/p>\n<\/div>\n                      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n\n\n\n\n<section class=\"section section--text-columns no-background\">\n    <div class=\"grid-container\">\n      <div class=\"grid-x grid-padding-x\">\n        <div class=\"cell\">\n                  \t<h3>Introduction<\/h3>\n                    <p>La solution type est l\u2019aboutissement des nombreuses le\u00e7ons que l\u2019organisation a tir\u00e9es lorsqu\u2019elle s\u2019est servie de Kubernetes pour \u00e9laborer puis d\u00e9ployer des logiciels. Ces enseignements et l\u2019exp\u00e9rience acquise apr\u00e8s consultation de nombreuses PME au sujet de la plateforme IT de Kubernetes ont \u00e9t\u00e9 synth\u00e9tis\u00e9s sous la forme d\u2019un code et de documents, ce qui a donn\u00e9 la trousse KAT. Nous esp\u00e9rons que cette ressource, c.-\u00e0-d. la solution type et le code de lancement, vous procurera les outils essentiels pour mener avec brio vos propres projets Kubernetes et initiatives \u00ab\u00a0cloud-native\u00a0\u00bb.<\/p>\n<p><strong>Remarque :<\/strong>\u00a0nous recommandons vivement que vous commenciez par prendre connaissance de la documentation la plus r\u00e9cente concernant la trousse KAT sur notre\u00a0<a href=\"https:\/\/github.com\/BigBitBusInc\/kubernetes-automation-toolkit\" target=\"_blank\" rel=\"noopener\">d\u00e9p\u00f4t GitHub<\/a>\u00a0afin de vous familiariser avec les nombreux concepts mentionn\u00e9s dans la solution type.<\/p>\n                  <\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n\n<h2 class=\"wp-block-heading\">Solution type<\/h2>\n\n\n\n<section class=\"section section--text-columns no-background\">\n    <div class=\"grid-container\">\n      <div class=\"grid-x grid-padding-x\">\n        <div class=\"cell\">\n                  \t<h3>Aper\u00e7u<\/h3>\n                    <p>Au c\u0153ur de la solution type figure une application compl\u00e8te (sous forme de code et de documentation) \u00e9labor\u00e9e et d\u00e9ploy\u00e9e sur la plateforme Kubernetes. Cette solution consiste en l\u2019API d\u2019un microservice et en une application correspondant \u00e0 un aide-m\u00e9moire d\u2019une page appel\u00e9e \u00ab todos \u00bb (cadriciel Django en Python pour l\u2019API et application frontale en Vue.js), d\u00e9ploy\u00e9es au moyen d\u2019une grappe Kubernetes dans le nuage de l\u2019ATIR. L\u2019application compl\u00e8te et les sous-syst\u00e8mes qui la supportent peuvent \u00eatre d\u00e9ploy\u00e9s sur une seule machine virtuelle (MV). Nous y avons ajout\u00e9 des outils avec lesquels le d\u00e9veloppeur pourra installer KAT sur un PC de d\u00e9veloppement mod\u00e9r\u00e9ment puissant afin qu\u2019il voie comment int\u00e9grer la trousse au flux de t\u00e2ches du d\u00e9veloppement. L\u2019application todos (liste de choses \u00e0 faire), offerte \u00e0 titre d\u2019exemple, fonctionne \u00e9galement avec la plateforme Docker usuelle, ce qui permet de comparer les deux approches.<\/p>\n<p>Outre le code source, la solution type comprend une infrastructure en tant que code qui configure les ressources Kubernetes soutenant l\u2019application. La grappe Kubernetes est configur\u00e9e avec Microk8s en vue de l\u2019installation d\u2019un seul n\u0153ud Kubernetes sur la MV. On trouvera ci-dessous une br\u00e8ve description des sous-syst\u00e8mes de soutien de Kubernetes.<\/p>\n<table border=\"1\">\n<tbody>\n<tr>\n<td><strong>Sous-syst\u00e8me<\/strong><\/td>\n<td><strong>Description<\/strong><\/td>\n<\/tr>\n<tr>\n<td>Stockage\/\u00c9tat<\/td>\n<td>Ce sous-syst\u00e8me montre comment d\u00e9ployer un composant v\u00e9rifiable; dans l\u2019exemple, la base de donn\u00e9es Postgres h\u00e9berg\u00e9e dans la grappe Kubernetes utilise les abstractions du volume de stockage persistant de Kubernetes.<\/td>\n<\/tr>\n<tr>\n<td>Point d\u2019entr\u00e9e et services<\/td>\n<td>Ces sous-syst\u00e8mes expliquent comment le trafic externe (nord-sud) de l\u2019application est achemin\u00e9 dans la grappe Kubernetes, jusqu\u2019aux applications qui y ont \u00e9t\u00e9 d\u00e9ploy\u00e9es.<\/td>\n<\/tr>\n<tr>\n<td>Espace de nommage<\/td>\n<td>En s\u00e9parant les composants en espaces de nommage, on montre comment s\u00e9parer la grappe Kubernetes sans danger entre de nombreux microservices.<\/td>\n<\/tr>\n<tr>\n<td>Gestion des secrets<\/td>\n<td>Ce sous-syst\u00e8me illustre comment stocker les mots de passe et d\u2019autres informations d\u00e9licates.<\/td>\n<\/tr>\n<tr>\n<td>D\u00e9ploiement<\/td>\n<td>Le d\u00e9ploiement joue un grand r\u00f4le dans le processus d\u2019int\u00e9gration et d\u2019ex\u00e9cution continues (CI-CD) de Kubernetes; nous installerons l\u2019application comme si on la d\u00e9ployait en vue d\u2019y greffer des t\u00e2ches suppl\u00e9mentaires comme la reprise au point de contr\u00f4le, une disponibilit\u00e9 \u00e9lev\u00e9e, etc.<\/td>\n<\/tr>\n<tr>\n<td>Versionnage<\/td>\n<td>Les versions du logiciel et leurs fonctionnalit\u00e9s comme la reprise au point de contr\u00f4le servent \u00e0 illustrer certains aspects op\u00e9rationnels importants de Kubernetes. Nous nous servirons de Helm \u00e0 cette fin.<\/td>\n<\/tr>\n<tr>\n<td>Surveillance<\/td>\n<td>La pile de contr\u00f4le Prometheus\/Grafana habituelle sert \u00e0 surveiller Kubernetes et les applications.<\/td>\n<\/tr>\n<tr>\n<td>Mise \u00e0 l\u2019\u00e9chelle automatique<\/td>\n<td>Horizontal Pod Autoscaler montrera \u00e0 l\u2019utilisateur comment Kubernetes g\u00e8re la mise \u00e0 l\u2019\u00e9chelle automatique.<\/td>\n<\/tr>\n<tr>\n<td>Limitation des ressources<\/td>\n<td>Kubernetes autorise l\u2019isolement des services selon des groupes de contr\u00f4le (cgroups) afin que les bogues comme une fuite de m\u00e9moire n\u2019affectent pas les autres services h\u00e9berg\u00e9s sur le n\u0153ud de travail. Nous montrerons comment Kubernetes y parvient en restreignant les ressources.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Les sous-syst\u00e8mes qui pr\u00e9c\u00e8dent seront tous configur\u00e9s au moyen des formules Helm (Charts) de Kubernetes. Nous verrons comment utiliser Skaffold pour d\u00e9ployer les formules Helm de l\u2019application.<\/p>\n<p>Fig.\u00a01 Solution type. Le d\u00e9veloppeur b\u00e2tit le logiciel (grand rectangle blanc sur l\u2019illustration) avec Vue.js (application frontale d\u2019une page), avec le cadriciel en Python Django (API dorsale) et avec une base de donn\u00e9es Postgres. Le Propulseur fournit le code n\u00e9cessaire et la m\u00e9thode pour cr\u00e9er les images Docker des applications dorsale et frontale. Ces images seront stock\u00e9es dans un registre avec l\u2019outil Skaffold.<\/p>\n                  <\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n\n<h2 class=\"wp-block-heading\">Formule de la solution <\/h2>\n\n\n<div class=\"wp-block-image is-style-default\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/boosterpacks.cloud.canarie.ca\/wp-content\/uploads\/Picture1.png\" alt=\"\"\/><figcaption class=\"wp-element-caption\">Fig. 1 &#8211; Sample Solution<\/figcaption><\/figure>\n<\/div>\n\n\n<p>Grafana et Prometheus sont d\u00e9ploy\u00e9s dans la grappe pour assurer la surveillance. Le tableau de bord de Kubernetes a aussi \u00e9t\u00e9 install\u00e9 et configur\u00e9 afin que l\u2019utilisateur puisse naviguer ais\u00e9ment lors de l\u2019installation de Kubernetes. Un contr\u00f4leur d\u2019entr\u00e9e NGINX a \u00e9t\u00e9 configur\u00e9 pour que le trafic puisse acc\u00e9der \u00e0 la grappe Kubernetes de l\u2019ext\u00e9rieur.<\/p>\n\n\n\n<p>La solution type KAT comprend les scripts qui installent Microk8s afin que Kubernetes puisse d\u00e9marrer sur une MV Ubuntu dans l\u2019ATIR. Apr\u00e8s d\u00e9marrage de la MV, vous pourrez utiliser les artefacts&nbsp;<em>infrastructure en tant que code<\/em>&nbsp;pour d\u00e9ployer l\u2019application et les sous-syst\u00e8mes qui la supportent mentionn\u00e9s plus haut de mani\u00e8re \u00e0 obtenir une pile totalement fonctionnelle sur la MV Ubuntu avec Microk8s, dans le nuage de l\u2019ATIR.<\/p>\n\n\n\n<p>Le code de l\u2019application et les artefacts de l\u2019infrastructure de Kubernetes donnent un aper\u00e7u des diff\u00e9rents rouages qui vous permettront de r\u00e9aliser vos propres projets Kubernetes dans le nuage de l\u2019ATIR et, par la suite, dans le nuage de n\u2019importe quel fournisseur public ou priv\u00e9.<\/p>\n\n\n\n<p>Pour une souplesse maximale, la solution type peut \u00eatre d\u00e9ploy\u00e9e sur votre propre ordinateur. Ceci vous permettra de d\u00e9velopper et de tester du code localement sur Kubernetes. Pour plus d\u2019informations \u00e0 ce sujet, on lira le document&nbsp;<a href=\"https:\/\/github.com\/BigBitBusInc\/kubernetes-automation-toolkit\/blob\/main\/documentation\/quickstart-vagrant.md\" target=\"_blank\" rel=\"noreferrer noopener\">installation vagabonde du Propulseur<\/a>&nbsp;(en anglais).<\/p>\n\n\n\n<section class=\"section section--text-columns no-background\">\n    <div class=\"grid-container\">\n      <div class=\"grid-x grid-padding-x\">\n        <div class=\"cell\">\n                  \t<h3>Description<\/h3>\n                    <p>Le tableau que voici donne une id\u00e9e des composants que regroupe la solution.<\/p>\n<table border=\"1\">\n<tbody>\n<tr>\n<td><strong>Composant<\/strong><\/td>\n<td><strong>Description<\/strong><\/td>\n<\/tr>\n<tr>\n<td>Infrastructure en tant que code Kubernetes<\/td>\n<td>Code Helm sp\u00e9cifique \u00e0 l\u2019application et manifestes Kubernetes employ\u00e9s pour lancer et actualiser le d\u00e9ploiement de l\u2019application, configmaps et gestion des secrets, Horizontal Pod Autoscaler pour chaque composant, infrastructure de soutien comme le stockage Kubernetes de la base de donn\u00e9es, ressources de surveillance et de point d\u2019entr\u00e9e, ainsi que questions de nature op\u00e9rationnelle comme la limitation des ressources et l\u2019espace de nommage<\/td>\n<\/tr>\n<tr>\n<td>Grappe Microk8s de Kubernetes<\/td>\n<td>Installation de Kubernetes sur un simple n\u0153ud de la machine virtuelle, dans le nuage de l\u2019ATIR<\/td>\n<\/tr>\n<tr>\n<td width=\"194\">Application Web moderne<\/td>\n<td width=\"418\">Application repr\u00e9sentative du genre \u00ab\u00a0liste de choses \u00e0 faire\u00a0\u00bb (To-Dos) avec partie frontale (Vue.js), partie dorsale (cadre REST sur Django) et base de donn\u00e9es PostgreSQL<\/td>\n<\/tr>\n<tr>\n<td>Composant d\u2019entr\u00e9e NGINX<\/td>\n<td>Composant NGINX pour l\u2019arriv\u00e9e du trafic dans Kubernetes avec L7 capacit\u00e9s de routage&nbsp;<\/p>\n<p><a href=\"https:\/\/github.com\/kubernetes\/ingress-NGINX\" target=\"_blank\" rel=\"noopener\">https:\/\/GitHub.com\/kubernetes\/ingress-NGINX<\/a><\/td>\n<\/tr>\n<tr>\n<td>Gestionnaire Helm<\/td>\n<td>On se servira des formules Helm (Charts) usuelles pour PostgreSQL, Prometheus, Grafana et Python, ainsi que de formules sp\u00e9ciales pour d\u00e9ployer et g\u00e9rer la pile d\u2019applications\u00a0<a href=\"https:\/\/helm.sh\/\" target=\"_blank\" rel=\"noopener\">https:\/\/Helm.sh\/<\/a><\/td>\n<\/tr>\n<tr>\n<td>D\u00e9p\u00f4t d\u2019infrastructure en tant que code (IaC) de GitHub<\/td>\n<td>D\u00e9p\u00f4t Git public h\u00e9bergeant l\u2019application et l\u2019IaC de Kubernetes<\/td>\n<\/tr>\n<tr>\n<td>Grafana + Prometheus<\/td>\n<td width=\"418\">Syst\u00e8me moderne de surveillance et d\u2019alerte utilisable avec Kubernetes<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>D\u00e9monstration de la technologie<\/h3>\n<p>Le graphique ci-dessous montre comment les \u00e9l\u00e9ments de l\u2019application sont d\u00e9ploy\u00e9s dans la grappe Kubernetes. Le tableau qui le suit en donne une description succincte, avec un lien menant \u00e0 la documentation compl\u00e8te. Encore une fois, nous vous incitons \u00e0 prendre connaissance des documents et du code \u00e0 jour dans le d\u00e9p\u00f4t KAT de GitHub, afin de mieux comprendre comment fonctionne la solution.<\/p>\n                  <\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n<div class=\"wp-block-image is-style-default\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/boosterpacks.cloud.canarie.ca\/wp-content\/uploads\/Picture2.png\" alt=\"\"\/><figcaption class=\"wp-element-caption\">Fig. 2 : \u00c9l\u00e9ments de KAT d\u00e9ploy\u00e9s dans Kubernetes<\/figcaption><\/figure>\n<\/div>\n\n\n<section class=\"section section--text-columns no-background\">\n    <div class=\"grid-container\">\n      <div class=\"grid-x grid-padding-x\">\n        <div class=\"cell\">\n                    <table border=\"1\">\n<tbody>\n<tr>\n<td><strong>\u00c9tiquette<\/strong><\/td>\n<td><strong>Description<\/strong><\/td>\n<td><strong>Commandes<\/strong><\/td>\n<td><strong>Lien vers le code<\/strong><\/td>\n<\/tr>\n<tr>\n<td>1(a)<\/td>\n<td>API du service dorsal\u00a0<strong>todos<\/strong>\u00a0dans Kubernetes. Ce composant \u00e9quilibre la charge des demandes parvenant au point terminal \/djangoapi\/ entre les deux unit\u00e9s d\u2019ex\u00e9cution (pod) dorsales indiqu\u00e9es sur l\u2019illustration. Service de type ClusterIP.<\/td>\n<td>kubectl -n be describe service<\/td>\n<td><a href=\"https:\/\/github.com\/BigBitBusInc\/kubernetes-automation-toolkit\/blob\/main\/code\/app-code\/api\/todo-python-django\/kubecode\/bigbitbus-dj-py-api\/templates\/service.yaml\" target=\"_blank\" rel=\"noopener\">Mod\u00e8le de l\u2019API dans la formule Helm<\/a><\/td>\n<\/tr>\n<tr>\n<td>1(b)<\/td>\n<td>Le d\u00e9ploiement de l\u2019API dorsale\u00a0<strong>todos\u00a0<\/strong>a cr\u00e9\u00e9 une r\u00e9plique qui a elle-m\u00eame d\u00e9fini deux pods pour l\u2019API Django.<\/td>\n<td>kubectl -n be get po -o wide<\/td>\n<td><a href=\"https:\/\/github.com\/BigBitBusInc\/kubernetes-automation-toolkit\/blob\/main\/code\/app-code\/api\/todo-python-django\/kubecode\/bigbitbus-dj-py-api\/templates\/deployment.yaml\" target=\"_blank\" rel=\"noopener\">Mod\u00e8le du d\u00e9ploiement de l\u2019API dans la formule Helm<\/a><\/td>\n<\/tr>\n<tr>\n<td>2(a)<\/td>\n<td>Service de base de donn\u00e9es\u00a0<strong>todos<\/strong>. Remarque\u00a0: le service ClusterIP \u00ab\u00a0interne\u00a0\u00bb et les pods de l\u2019API Django 1(b) s\u2019y connectent pour ouvrir le port 5432.<\/td>\n<td>kubectl -n pg describe svc<\/td>\n<td><a href=\"https:\/\/github.com\/bitnami\/charts\/tree\/master\/bitnami\/postgresql\/\" target=\"_blank\" rel=\"noopener\">Formule Helm de Postgres<\/a><u>,\u00a0<\/u><a href=\"https:\/\/github.com\/BigBitBusInc\/kubernetes-automation-toolkit\/blob\/main\/code\/k8s-common-code\/postgres-db\/pg-values.yaml\" target=\"_blank\" rel=\"noopener\">fichier des valeurs Postgres de KAT<\/a><\/td>\n<\/tr>\n<tr>\n<td>2(b)<\/td>\n<td>Pod de la base de donn\u00e9es postgres. Il utilise un volume persistant pour maintenir la base de donn\u00e9es.<\/td>\n<td>kubectl -n pg describe po<\/td>\n<td><a href=\"https:\/\/github.com\/bitnami\/charts\/tree\/master\/bitnami\/postgresql\/\" target=\"_blank\" rel=\"noopener\">Formule Helm de Postgres<\/a><u>,\u00a0<\/u><a href=\"https:\/\/github.com\/BigBitBusInc\/kubernetes-automation-toolkit\/blob\/main\/code\/k8s-common-code\/postgres-db\/pg-values.yaml\" target=\"_blank\" rel=\"noopener\">fichier des valeurs Postgres de KAT<\/a><\/td>\n<\/tr>\n<tr>\n<td>3(a)<\/td>\n<td>Application frontale d\u2019une page Vue.js du service\u00a0<strong>todos<\/strong>. Ce composant \u00e9quilibre la charge des demandes au point terminal frontal entre les deux pods frontaux qui desservent les fichiers Vue.js sur l\u2019illustration. Service de type ClusterIP.<\/td>\n<td>kubectl -n fe describe svc<\/td>\n<td><a href=\"https:\/\/github.com\/BigBitBusInc\/kubernetes-automation-toolkit\/blob\/main\/code\/app-code\/frontend\/todo-vuejs\/kubecode\/bigbitbus-vue-fe\/templates\/service.yaml\" target=\"_blank\" rel=\"noopener\">Mod\u00e8le du service frontal<\/a>\u00a0employ\u00e9 pour restituer un manifeste YAML de Kubernetes d\u2019apr\u00e8s les valeurs transmises \u00e0 Helm<\/td>\n<\/tr>\n<tr>\n<td>3(b)<\/td>\n<td>Pods frontaux \u2013 ces unit\u00e9s d\u2019ex\u00e9cution NGINX desservent les fichiers de code de Vue.js. Application non v\u00e9rifiable puisqu\u2019elle n\u2019est pas raccord\u00e9e \u00e0 l\u2019API dorsale; le client charge l\u2019application sur son navigateur puis s\u2019adresse directement \u00e0 l\u2019API dorsale sur \/djangoapi\/.<\/td>\n<td>kubectl -n fe describe deploy; kubectl -n fe get po -o wide<\/td>\n<td><a href=\"https:\/\/github.com\/BigBitBusInc\/kubernetes-automation-toolkit\/blob\/main\/code\/app-code\/frontend\/todo-vuejs\/kubecode\/bigbitbus-vue-fe\/templates\/service.yaml\" target=\"_blank\" rel=\"noopener\">Mod\u00e8le de service frontal<\/a>\u00a0employ\u00e9 pour restituer un manifeste YAML de Kubernetes d\u2019apr\u00e8s les valeurs transmises \u00e0 Helm<\/td>\n<\/tr>\n<tr>\n<td>4(a)<\/td>\n<td>Tableau de bord Kubernetes; il envoie les demandes re\u00e7ues au pod du tableau de bord.<\/td>\n<td>kubectl -n dashboard describe svc; kubectl -n dashboard describe endpoints<\/td>\n<td><a href=\"https:\/\/github.com\/kubernetes\/dashboard\/tree\/master\/aio\/deploy\/helm-chart\/kubernetes-dashboard\" target=\"_blank\" rel=\"noopener\">Formule Helm du tableau de bord<\/a><u>;\u00a0<\/u><a href=\"https:\/\/github.com\/BigBitBusInc\/kubernetes-automation-toolkit\/blob\/main\/code\/k8s-common-code\/k8sdashboard\/dashboard-values.yaml\" target=\"_blank\" rel=\"noopener\">fichier des valeurs du tableau de bord KAT<\/a><\/td>\n<\/tr>\n<tr>\n<td>4(b)<\/td>\n<td>Pod du tableau de bord Kubernetes. Remarque\u00a0: ce service n\u2019est pas tr\u00e8s disponible car il n\u2019est pas r\u00e9pliqu\u00e9.<\/td>\n<td>kubectl -n dashboard describe po<\/td>\n<td><a href=\"https:\/\/github.com\/kubernetes\/dashboard\/tree\/master\/aio\/deploy\/helm-chart\/kubernetes-dashboard\" target=\"_blank\" rel=\"noopener\">Formule Helm du tableau de bord<\/a><u>;\u00a0<\/u><a href=\"https:\/\/github.com\/BigBitBusInc\/kubernetes-automation-toolkit\/blob\/main\/code\/k8s-common-code\/k8sdashboard\/dashboard-values.yaml\" target=\"_blank\" rel=\"noopener\">fichier des valeurs du tableau de bord KAT<\/a><\/td>\n<\/tr>\n<tr>\n<td>5(a)<\/td>\n<td>Tableau de bord Grafana<\/td>\n<td>kubectl -n monitoring describe service grafana<\/td>\n<td><a href=\"https:\/\/github.com\/prometheus-community\/helm-charts\/tree\/main\/charts\/kube-prometheus-stack\" target=\"_blank\" rel=\"noopener\">Formule Helm de la pile Prometheus<\/a><u>,\u00a0<\/u><a href=\"https:\/\/github.com\/BigBitBusInc\/kubernetes-automation-toolkit\/blob\/main\/code\/k8s-common-code\/monitoring\/prometheus-grafana-monitoring-stack-values.yaml\" target=\"_blank\" rel=\"noopener\">fichier KAT des valeurs de la pile Prometheus pour Helm<\/a><u>.<\/u><\/td>\n<\/tr>\n<tr>\n<td>5(b)<\/td>\n<td>Pod de Grafana<\/td>\n<td>kubectl -n monitoring describe po grafana<\/td>\n<td><a href=\"https:\/\/github.com\/prometheus-community\/helm-charts\/tree\/main\/charts\/kube-prometheus-stack\" target=\"_blank\" rel=\"noopener\">Formule Helm de la pile Prometheus<\/a><u>,\u00a0<\/u><a href=\"https:\/\/github.com\/BigBitBusInc\/kubernetes-automation-toolkit\/blob\/main\/code\/k8s-common-code\/monitoring\/prometheus-grafana-monitoring-stack-values.yaml\" target=\"_blank\" rel=\"noopener\">fichier KAT des valeurs de la pile Prometheus pour Helm<\/a><u>.<\/u><\/td>\n<\/tr>\n<tr>\n<td>6(a)<\/td>\n<td>Service du serveur de mesure chronologique de Prometheus. Remarque\u00a0: il n\u2019est pas expos\u00e9 \u00e0 l\u2019ext\u00e9rieur par le composant d\u2019entr\u00e9e; service interne utilis\u00e9 par Grafana.<\/td>\n<td>kubectl -n monitoring describe pod Prometheus-server<\/td>\n<td><a href=\"https:\/\/github.com\/prometheus-community\/helm-charts\/tree\/main\/charts\/kube-prometheus-stack\" target=\"_blank\" rel=\"noopener\">Formule Helm de la pile Prometheus<\/a><u>,\u00a0<\/u><a href=\"https:\/\/github.com\/BigBitBusInc\/kubernetes-automation-toolkit\/blob\/main\/code\/k8s-common-code\/monitoring\/prometheus-grafana-monitoring-stack-values.yaml\" target=\"_blank\" rel=\"noopener\">fichier KAT des valeurs de la pile Prometheus pour Helm<\/a><u>.<\/u><\/td>\n<\/tr>\n<tr>\n<td>6(b)<\/td>\n<td>Pod du serveur Prometheus. Remarque\u00a0: utilise un volume persistant pour stocker les donn\u00e9es.<\/td>\n<td>kubectl -n monitoring get po -o wide; kubectl get pv; kubectl -n monitoring get pvc<\/td>\n<td><a href=\"https:\/\/github.com\/prometheus-community\/helm-charts\/tree\/main\/charts\/kube-prometheus-stack\" target=\"_blank\" rel=\"noopener\">Formule Helm de la pile Prometheus<\/a><u>,\u00a0<\/u><a href=\"https:\/\/github.com\/BigBitBusInc\/kubernetes-automation-toolkit\/blob\/main\/code\/k8s-common-code\/monitoring\/prometheus-grafana-monitoring-stack-values.yaml\" target=\"_blank\" rel=\"noopener\">fichier KAT des valeurs de la pile Prometheus pour Helm<\/a><u>.<\/u><\/td>\n<\/tr>\n<tr>\n<td>7<\/td>\n<td>Composant d\u2019entr\u00e9e. Toutes les demandes HTTP le traversent pour p\u00e9n\u00e9trer dans la grappe Kubernetes, puis sont achemin\u00e9es vers l\u2019API frontale, l\u2019AP\u00ce de Django, le tableau de bord ou le module de surveillance Grafana selon le cas. C\u2019est ici que se terminerait le SSL sur la plateforme de production ou l\u2019interface avec l\u2019\u00e9quilibreur de charge du fournisseur de services d\u2019infonuagique. Donc, le composant d\u2019entr\u00e9e est habituellement un \u00e9l\u00e9ment tr\u00e8s important de la configuration de l\u2019application dans Kubernetes.<\/td>\n<td>kubectl get ingress \u2013all-namespaces -o wide<\/td>\n<td><a href=\"https:\/\/kubernetes.github.io\/ingress-nginx\/\" target=\"_blank\" rel=\"noopener\">Documentation sur le composant d\u2019entr\u00e9e NGINX<\/a><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n                  <\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n\n<section class=\"section section--text-columns no-background\">\n    <div class=\"grid-container\">\n      <div class=\"grid-x grid-padding-x\">\n        <div class=\"cell\">\n                    <h1>Pr\u00eat \u00e0 d\u00e9coller?<\/h1>\n<h3 class=\"wp-block-heading has-cyan-color has-text-color\">D\u00e9ploiement de la Solution type<\/h3>\n<p>Avant de d\u00e9ployer la solution, vous devrez avoir pris les mesures qui suivent sur votre compte du Nuage de l\u2019ATIR\u00a0:<\/p>\n<ol>\n<li>vous avez cr\u00e9\u00e9 un groupe de s\u00e9curit\u00e9 vous donnant acc\u00e8s aux MV \u00e9tablies dans le Nuage de l\u2019ATIR par le protocole SSH (port\u00a022 du protocole TCP) \u00e0 partir de l\u2019adresse IP utilis\u00e9e pour acc\u00e9der \u00e0 cette MV;<\/li>\n<li>vous avez configur\u00e9 votre <a href=\"https:\/\/docs.aws.amazon.com\/AWSEC2\/latest\/UserGuide\/create-key-pairs.html#having-ec2-create-your-key-pair\">paire de cl\u00e9s SSH<\/a>\u00a0pour acc\u00e9der aux MV dans l\u2019ATIR.<\/li>\n<\/ol>\n<p>Vous devez pouvoir cr\u00e9er une MV Linux dans le Nuage de l\u2019ATIR et vous y connecter avec le protocole SSH avant d\u2019aller plus loin.<\/p>\n<p><strong>D\u00e9ploiement de la Solution type KAT dans le Nuage de l\u2019ATIR<\/strong><\/p>\n<ol>\n<li>Ouvrez une s\u00e9ance sur votre compte ATIR d\u2019AWS en suivant les instructions que vous a procur\u00e9es l\u2019\u00e9quipe de l\u2019ATIR.<\/li>\n<li>Cliquez <span style=\"font-weight: normal !msorm;\"><strong><a href=\"https:\/\/ca-central-1.console.aws.amazon.com\/cloudformation\/home?region=ca-central-1#\/stacks\/create?stackName=BIGBITBUS-BOOSTERPACK&amp;templateURL=https:\/\/boosterpack-cloudformation-templates.s3.ca-central-1.amazonaws.com\/bigbitbus.json\">D<b>\u00c9PLOYER<\/b><\/a><\/strong><\/span> pour lancer le Propulseur avec la pile CloudFormation d\u2019AWS.<\/li>\n<li><em>Vous trouverez aussi un lien D\u00c9PLOYER <\/em><em>pour chaque Solution type dans le <span style=\"font-style: normal !msorm;\"><a href=\"https:\/\/www.canarie.ca\/fr\/nuage\/propulseurs\/catalogue\/plan-de-vol-ido-automatisation-de-lorchestration-en-nuage-avec-kubernetes\/\"><i><span style=\"font-weight: normal !msorm;\">Catalogue des Propulseurs<\/span><\/i><\/a><\/span><span style=\"font-style: normal !msorm;\">.<\/span> <\/em><\/li>\n<\/ol>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-40428\" src=\"https:\/\/www.canarie.ca\/wp-content\/uploads\/2023\/09\/Creer-une-pile.png\" alt=\"\" width=\"1920\" height=\"890\" srcset=\"https:\/\/www.canarie.ca\/wp-content\/uploads\/2023\/09\/Creer-une-pile.png 1920w, https:\/\/www.canarie.ca\/wp-content\/uploads\/2023\/09\/Creer-une-pile-300x139.png 300w, https:\/\/www.canarie.ca\/wp-content\/uploads\/2023\/09\/Creer-une-pile-1024x475.png 1024w, https:\/\/www.canarie.ca\/wp-content\/uploads\/2023\/09\/Creer-une-pile-768x356.png 768w, https:\/\/www.canarie.ca\/wp-content\/uploads\/2023\/09\/Creer-une-pile-1536x712.png 1536w\" sizes=\"auto, (max-width: 1920px) 100vw, 1920px\" \/><\/p>\n<p>Cliquez <strong>Suivant <\/strong>pour passer \u00e0 la deuxi\u00e8me \u00e9tape de CloudFormation puis remplissez le formulaire de configuration. Dans le champ \u00ab\u00a0<strong>InstanceName<\/strong>\u00a0\u00bb, donnez un nom unique \u00e0 l\u2019instance du serveur de l\u2019application et compl\u00e9tez le formulaire au moyen des menus d\u00e9roulants. Veuillez noter que les autres param\u00e8tres comme \u00ab\u00a0ApplicationImage\u00a0\u00bb ou \u00ab\u00a0InstanceType\u00a0\u00bb ont d\u00e9j\u00e0 \u00e9t\u00e9 configur\u00e9s et ne peuvent \u00eatre modifi\u00e9s.<\/p>\n<h3><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-40430\" src=\"https:\/\/www.canarie.ca\/wp-content\/uploads\/2023\/09\/specifiers-les-details-de-la-pile.png\" alt=\"\" width=\"1920\" height=\"890\" srcset=\"https:\/\/www.canarie.ca\/wp-content\/uploads\/2023\/09\/specifiers-les-details-de-la-pile.png 1920w, https:\/\/www.canarie.ca\/wp-content\/uploads\/2023\/09\/specifiers-les-details-de-la-pile-300x139.png 300w, https:\/\/www.canarie.ca\/wp-content\/uploads\/2023\/09\/specifiers-les-details-de-la-pile-1024x475.png 1024w, https:\/\/www.canarie.ca\/wp-content\/uploads\/2023\/09\/specifiers-les-details-de-la-pile-768x356.png 768w, https:\/\/www.canarie.ca\/wp-content\/uploads\/2023\/09\/specifiers-les-details-de-la-pile-1536x712.png 1536w\" sizes=\"auto, (max-width: 1920px) 100vw, 1920px\" \/><\/h3>\n<p>Cela fait, cliquez <strong>SUIVANT<\/strong> pour passer \u00e0 la troisi\u00e8me \u00e9tape. Cette partie permet de configurer d\u2019autres options, plus avanc\u00e9es, mais inutiles dans le cas qui nous int\u00e9resse. Cliquez simplement <strong>SUIVANT<\/strong>, au bas de la page, pour passer \u00e0 la quatri\u00e8me et derni\u00e8re \u00e9tape.<\/p>\n<p>La derni\u00e8re partie vous permet de v\u00e9rifier la configuration du Propulseur et d\u2019y apporter des changements avec le bouton \u00ab\u00a0Modifier\u00a0\u00bb, si besoin est. Une fois que la configuration vous convient, cliquez \u00ab\u00a0Soumettre\u00a0\u00bb, au bas de la page, pour d\u00e9ployer le Propulseur.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-40432\" src=\"https:\/\/www.canarie.ca\/wp-content\/uploads\/2023\/09\/verifier.png\" alt=\"\" width=\"1920\" height=\"890\" srcset=\"https:\/\/www.canarie.ca\/wp-content\/uploads\/2023\/09\/verifier.png 1920w, https:\/\/www.canarie.ca\/wp-content\/uploads\/2023\/09\/verifier-300x139.png 300w, https:\/\/www.canarie.ca\/wp-content\/uploads\/2023\/09\/verifier-1024x475.png 1024w, https:\/\/www.canarie.ca\/wp-content\/uploads\/2023\/09\/verifier-768x356.png 768w, https:\/\/www.canarie.ca\/wp-content\/uploads\/2023\/09\/verifier-1536x712.png 1536w\" sizes=\"auto, (max-width: 1920px) 100vw, 1920px\" \/><\/p>\n<p>Le d\u00e9ploiement commence par la cr\u00e9ation d\u2019une nouvelle instance. Le reste est automatique. Suivre le d\u00e9veloppement de l\u2019instance n\u2019est possible qu\u2019avec les ongles \u00ab\u00a0<strong>\u00c9v\u00e9nements\u00a0<\/strong>\u00bb et \u00ab\u00a0<strong>Ressources\u00a0<\/strong>\u00bb de la console CloudFormation. Ensuite, vous devrez vous connecter au serveur de l\u2019application pour v\u00e9rifier si la solution s\u2019est bien d\u00e9ploy\u00e9e automatiquement.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-40434\" src=\"https:\/\/www.canarie.ca\/wp-content\/uploads\/2023\/09\/2023-09-05_15-17-30.gif\" alt=\"\" width=\"1024\" height=\"576\" \/><\/p>\n<p>Notez aussi l\u2019adresse IP qui appara\u00eet \u00e0 l\u2019onglet \u00ab\u00a0<strong>Sorties\u00a0<\/strong>\u00bb, sur la page CloudFormation du Propulseur. Elle correspond \u00e0 l\u2019adresse IP externe de l\u2019instance. Vous en aurez besoin pour vous connecter au serveur avec le protocole SSH et acc\u00e9der aux interfaces Web de l\u2019application.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-40436\" src=\"https:\/\/www.canarie.ca\/wp-content\/uploads\/2023\/09\/sorties.png\" alt=\"\" width=\"966\" height=\"372\" srcset=\"https:\/\/www.canarie.ca\/wp-content\/uploads\/2023\/09\/sorties.png 966w, https:\/\/www.canarie.ca\/wp-content\/uploads\/2023\/09\/sorties-300x116.png 300w, https:\/\/www.canarie.ca\/wp-content\/uploads\/2023\/09\/sorties-768x296.png 768w\" sizes=\"auto, (max-width: 966px) 100vw, 966px\" \/><\/p>\n<p>Connectez-vous au serveur de l\u2019application avec la commande SSH qui suit, \u00e0 partir d\u2019une interface de commande\/d\u2019un terminal activ\u00e9s par SSH.<\/p>\n<pre>ssh -i key_file.pem ubuntu@Public_IP<\/pre>\n<p>&nbsp;<\/p>\n<p>Remplacez \u00ab\u00a0key_file\u00a0\u00bb par la cl\u00e9 priv\u00e9e de la paire de cl\u00e9s SSH \u00e9tablie dans le formulaire de configuration et remplacez \u00ab\u00a0Public_IP\u00a0\u00bb par l\u2019adresse IP obtenue \u00e0 l\u2019onglet \u00ab\u00a0Sorties\u00a0\u00bb de la console CloudFormation.<\/p>\n<p>Apr\u00e8s vous \u00eatre connect\u00e9 au serveur de l\u2019application, vous pourrez suivre le d\u00e9roulement du script d\u2019automatisation avec les commandes que voici\u00a0:<\/p>\n<pre>source \/etc\/profile.d\/boosterpack.sh\r\n\r\ntail -f \/var\/log\/boosterpack.log<\/pre>\n<h3><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter  wp-image-40438\" src=\"https:\/\/www.canarie.ca\/wp-content\/uploads\/2023\/09\/token.png\" alt=\"\" width=\"1066\" height=\"480\" srcset=\"https:\/\/www.canarie.ca\/wp-content\/uploads\/2023\/09\/token.png 1146w, https:\/\/www.canarie.ca\/wp-content\/uploads\/2023\/09\/token-300x135.png 300w, https:\/\/www.canarie.ca\/wp-content\/uploads\/2023\/09\/token-1024x461.png 1024w, https:\/\/www.canarie.ca\/wp-content\/uploads\/2023\/09\/token-768x346.png 768w\" sizes=\"auto, (max-width: 1066px) 100vw, 1066px\" \/><\/h3>\n<p>Notez le jeton d\u2019utilisateur (copiez-le sur le bloc-notes), car vous en aurez besoin pour acc\u00e9der \u00e0 la console Kubernetes, par la suite. Vous pouvez aussi r\u00e9cup\u00e9rer ce jeton au moyen du serveur de l\u2019application du Propulseur avec la commande ci-dessous\u00a0:<\/p>\n<pre>sudo microk8s config<\/pre>\n<p>&nbsp;<\/p>\n<p>L\u2019\u00e9tape suivante consiste \u00e0 configurer le renvoi du port\u00a08080 de votre ordinateur au port\u00a080 de la MV de l\u2019ATIR \u00e0 travers un tunnel SSH. De cette mani\u00e8re, on s\u00e9curise l\u2019acc\u00e8s au serveur tout en ouvrant la porte \u00e0 tous les services http de la Solution type KAT.<\/p>\n<p>Pour cela, utilisez la commande Linux\/Mac qui suit.<\/p>\n<p>La ligne de commande SSH cr\u00e9e un tunnel de localhost:8080, sur l\u2019ordinateur, \u00e0 localhost:80, sur la VM de l\u2019ATIR, par son adresse IP externe.<\/p>\n<pre>ssh -i key_file.pem ubuntu@Public_IP -L 8080:localhost:80 -N<\/pre>\n<p>&nbsp;<\/p>\n<p>Une autre fa\u00e7on de proc\u00e9der consisterait \u00e0 configurer le renvoi d\u2019un port SSH \u00e0 l\u2019autre avec l\u2019outil Putty de Windows. Pour cela, suivez le guide\u00a0: <a href=\"https:\/\/docs.bitnami.com\/bch\/faq\/get-started\/access-ssh-tunnel\/\">https:\/\/docs.bitnami.com\/bch\/faq\/get-started\/access-ssh-tunnel\/<\/a> <u>(en anglais)<\/u><\/p>\n<p><strong>Remarque\u00a0<\/strong>: si vous utilisez Putty, rappelez-vous d\u2019\u00e9tablir le lien avec localhost:8080, PAS localhost:8888, tel qu\u2019indiqu\u00e9 dans le guide.<\/p>\n<h3>V\u00e9rification de l\u2019installation<\/h3>\n<p><strong>Attention<\/strong>\u00a0: La barre oblique finale \u00ab \/ \u00bb est obligatoire dans l\u2019URL ci-dessous!<\/p>\n<p>1. Ouvrez un navigateur et allez \u00e0 <a href=\"http:\/\/localhost:8080\/frontend\/\">http:\/\/localhost:8080\/frontend\/<\/a><\/p>\n<p>2. Vous serez connect\u00e9 au service frontal de la liste <strong>todos<\/strong>\u00a0dans Vue.js.<\/p>\n<p>3. Vous devriez voir l\u2019application <strong>Todo List<\/strong>; saisissez quelques choses \u00e0 faire (<strong>todo<\/strong>) et assurez-vous que la liste s\u2019allonge ou raccourcit quand vous ajoutez ou retranchez des \u00e9l\u00e9ments. Vous pouvez aussi modifier les \u00e9l\u00e9ments en les double-cliquant.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1486\" src=\"https:\/\/boosterpacks.cloud.canarie.ca\/wp-content\/uploads\/Picture16.png\" sizes=\"auto, (max-width: 626px) 100vw, 626px\" srcset=\"https:\/\/propulseurs.cloud.canarie.ca\/wp-content\/uploads\/Picture16.png 626w, https:\/\/propulseurs.cloud.canarie.ca\/wp-content\/uploads\/Picture16-300x101.png 300w\" alt=\"\" width=\"626\" height=\"210\" \/><\/p>\n<p>4. Ensuite, v\u00e9rifiez que le service API de Django est accessible. Sur un nouvel onglet du navigateur, allez \u00e0 <a href=\"http:\/\/localhost:8080\/djangoapi\/apis\/v1\/\">http:\/\/localhost:8080\/djangoapi\/apis\/v1\/<\/a>. Ceci devrait vous connecter \u00e0 l\u2019API explorable de Django. Vous devriez voir les \u00e9l\u00e9ments que vous venez de saisir avec l\u2019application frontale (\u00e9tape qui pr\u00e9c\u00e8de) en format JSON<\/p>\n<p>.<img loading=\"lazy\" decoding=\"async\" class=\" wp-image-1488 alignnone\" src=\"https:\/\/boosterpacks.cloud.canarie.ca\/wp-content\/uploads\/Picture17.png\" sizes=\"auto, (max-width: 626px) 100vw, 626px\" srcset=\"https:\/\/propulseurs.cloud.canarie.ca\/wp-content\/uploads\/Picture17.png 626w, https:\/\/propulseurs.cloud.canarie.ca\/wp-content\/uploads\/Picture17-300x206.png 300w\" alt=\"\" width=\"733\" height=\"502\" \/><\/p>\n<p>5. \u00c0 pr\u00e9sent, ouvrez le tableau de bord de Kubernetes en allant \u00e0 <a href=\"http:\/\/localhost:8080\/dashboard\/\">http:\/\/localhost:8080\/dashboard\/<\/a>. Utilisez le jeton copi\u00e9 lors de la configuration (\u00e9tape\u00a011 du d\u00e9ploiement, plus haut) pour acc\u00e9der au tableau de bord. Vous devriez pouvoir naviguer dans la grappe Kubernetes qui a \u00e9t\u00e9 d\u00e9ploy\u00e9e sur la MV de l\u2019ATIR. La saisie d\u2019\u00e9cran ci-dessous devrait correspondre \u00e0 ce qui appara\u00eet \u00e0 l\u2019\u00e9cran.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-1490 alignnone\" src=\"https:\/\/boosterpacks.cloud.canarie.ca\/wp-content\/uploads\/Picture18.png\" sizes=\"auto, (max-width: 1252px) 100vw, 1252px\" srcset=\"https:\/\/propulseurs.cloud.canarie.ca\/wp-content\/uploads\/Picture18.png 1252w, https:\/\/propulseurs.cloud.canarie.ca\/wp-content\/uploads\/Picture18-300x136.png 300w, https:\/\/propulseurs.cloud.canarie.ca\/wp-content\/uploads\/Picture18-1024x463.png 1024w, https:\/\/propulseurs.cloud.canarie.ca\/wp-content\/uploads\/Picture18-768x347.png 768w\" alt=\"\" width=\"1252\" height=\"566\" \/><\/p>\n<p>6. Enfin, allez \u00e0 <a href=\"http:\/\/localhost:8080\/monitoring-grafana\/\">http:\/\/localhost:8080\/monitoring-grafana\/<\/a>\u00a0pour vous connecter au service de surveillance Grafana. Ouvrez une s\u00e9ance en utilisant les justificatifs par d\u00e9faut suivants\u00a0:Nom d\u2019utilisateur\u00a0: \u00ab\u00a0admin\u00a0\u00bb<br \/>\nMot de passe\u00a0: \u00ab\u00a0prom-operator\u00a0\u00bb<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1492\" src=\"https:\/\/boosterpacks.cloud.canarie.ca\/wp-content\/uploads\/Picture19.png\" sizes=\"auto, (max-width: 533px) 100vw, 533px\" srcset=\"https:\/\/propulseurs.cloud.canarie.ca\/wp-content\/uploads\/Picture19.png 533w, https:\/\/propulseurs.cloud.canarie.ca\/wp-content\/uploads\/Picture19-300x190.png 300w\" alt=\"\" width=\"533\" height=\"337\" \/><\/p>\n<p>7. Pour avoir une id\u00e9e de ce qu\u2019il est possible de surveiller dans la grappe Kubernetes, allez au menu \u00ab Manage Dashboards \u00bb, \u00e0 gauche et cliquez le lien \u00ab Kubernetes \/ Compute Resources \/ Cluster \u00bb, encadr\u00e9 sur la saisie d\u2019\u00e9cran ci-dessous.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1494\" src=\"https:\/\/boosterpacks.cloud.canarie.ca\/wp-content\/uploads\/Picture20.png\" sizes=\"auto, (max-width: 1080px) 100vw, 1080px\" srcset=\"https:\/\/propulseurs.cloud.canarie.ca\/wp-content\/uploads\/Picture20.png 1080w, https:\/\/propulseurs.cloud.canarie.ca\/wp-content\/uploads\/Picture20-300x161.png 300w, https:\/\/propulseurs.cloud.canarie.ca\/wp-content\/uploads\/Picture20-1024x548.png 1024w, https:\/\/propulseurs.cloud.canarie.ca\/wp-content\/uploads\/Picture20-768x411.png 768w\" alt=\"\" width=\"1080\" height=\"578\" \/><\/p>\n<p>8. Le tableau de bord ci-dessous devrait appara\u00eetre \u00e0 l\u2019\u00e9cran avec diverses donn\u00e9es sur la grappe. Vous pouvez personnaliser (modifier) le tableau de bord ou en cr\u00e9er un nouveau, selon ce que vous pr\u00e9f\u00e9rez.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1496\" src=\"https:\/\/boosterpacks.cloud.canarie.ca\/wp-content\/uploads\/Picture21.png\" sizes=\"auto, (max-width: 1105px) 100vw, 1105px\" srcset=\"https:\/\/propulseurs.cloud.canarie.ca\/wp-content\/uploads\/Picture21.png 1105w, https:\/\/propulseurs.cloud.canarie.ca\/wp-content\/uploads\/Picture21-231x300.png 231w, https:\/\/propulseurs.cloud.canarie.ca\/wp-content\/uploads\/Picture21-790x1024.png 790w, https:\/\/propulseurs.cloud.canarie.ca\/wp-content\/uploads\/Picture21-768x995.png 768w\" alt=\"\" width=\"1105\" height=\"1432\" \/><\/p>\n<p>&nbsp;<\/p>\n                  <\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n\n<section class=\"section section--text-columns no-background\">\n    <div class=\"grid-container\">\n      <div class=\"grid-x grid-padding-x\">\n        <div class=\"cell\">\n                  \t<h3>Consid\u00e9rations d\u2019ordre technique<\/h3>\n                    <p>Les principales fonctionnalit\u00e9s de la solution type sont examin\u00e9es ci-dessous.\u00a0<em>Nous vous recommandons vivement de prendre connaissance de la documentation la plus r\u00e9cente que vous trouverez dans le d\u00e9p\u00f4t de source ouverte Kubernetes Automation Toolkit de BigBitBus \u00e0 l\u2019adresse\u00a0:<\/em><\/p>\n<p><a href=\"https:\/\/github.com\/BigBitBusInc\/kubernetes-automation-toolkit\" target=\"_blank\" rel=\"noopener\">https:\/\/GitHub.com\/BigBitBusInc\/kubernetes-automation-toolkit<\/a><\/p>\n<h2>D\u00e9ploiement<\/h2>\n<h3>Skaffold<\/h3>\n<p>Outil de construction automatique d\u00e9velopp\u00e9 par Google pour les applications Kubernetes. Il g\u00e8re le flux de t\u00e2ches qui b\u00e2tit, initialise et d\u00e9ploie l\u2019application. Gr\u00e2ce \u00e0 lui, le d\u00e9veloppeur peut consacrer plus de temps au d\u00e9veloppement qu\u2019\u00e0 l\u2019\u00e9rection et au d\u00e9ploiement de son application. Les d\u00e9ploiements utilisant Skaffold reposent sur un fichier \u00ab\u00a0skaffold.YAML\u00a0\u00bb renfermant diverses informations comme l\u2019image Docker \u00e0 utiliser pour b\u00e2tir le conteneur, le chemin jusqu\u2019\u00e0 l\u2019application, l\u2019environnement dans lequel elle doit \u00eatre d\u00e9ploy\u00e9e et ainsi de suite. En ex\u00e9cutant ce fichier, on laisse Skaffold surveiller un r\u00e9pertoire local d\u2019applications pour y rep\u00e9rer les modifications et b\u00e2tir, initialiser et d\u00e9ployer une grappe Kubernetes locale ou \u00e9loign\u00e9e d\u00e8s qu\u2019un changement a \u00e9t\u00e9 d\u00e9cel\u00e9. Plus sur le sujet ici\u00a0:\u00a0<a href=\"https:\/\/skaffold.dev\/docs\/\" target=\"_blank\" rel=\"noopener\">https:\/\/skaffold.dev\/docs\/<\/a><\/p>\n<p>Dans notre exemple, Skaffold nous permet de d\u00e9velopper l\u2019application dorsale Django et l\u2019application frontale Vue.js sans avoir \u00e0 en configurer le d\u00e9ploiement, comme le fichier des manifestes Kubernetes ou la reconstruction des images. Une ex\u00e9cution rapide de Skaffold b\u00e2tira l\u2019application et la d\u00e9ploiera dans la grappe Kubernetes, avec surveillance des changements \u00e9ventuels qu\u2019on y apporte.<\/p>\n<h3>Helm<\/h3>\n<p>Gestionnaire de paquets de Kubernetes. \u00c9quivalent de Yum\/Apt pour les applications Kubernetes. Helm cr\u00e9e et d\u00e9ploie des formules Helm (Charts), c\u2019est-\u00e0-dire des paquets structur\u00e9s sur l\u2019architecture de Kubernetes. Ces formules conf\u00e8rent une structure simple et normalis\u00e9e aux manifestes Kubernetes n\u00e9cessaires pour le d\u00e9ploiement. Apr\u00e8s addition de la formule au d\u00e9p\u00f4t Helm local, la commande rapide \u00ab\u00a0Helm install [formule Helm]\u00a0\u00bb simplifie le d\u00e9ploiement dans la grappe Kubernetes. Plus d\u2019informations \u00e0 ce sujet ici\u00a0:\u00a0<a href=\"https:\/\/helm.sh\/docs\/\" target=\"_blank\" rel=\"noopener\">https:\/\/helm.sh\/docs\/<\/a><\/p>\n<p>Des formules Helm ont \u00e9t\u00e9 cr\u00e9\u00e9es pour les applications dorsale et frontale du Propulseur, en conformit\u00e9 avec la structure d\u00e9j\u00e0 employ\u00e9e pour les autres composants. On s\u2019est aussi servi de Helm pour installer la base de donn\u00e9es PostgreSQL de Bitnami, l\u2019op\u00e9rateur Prometheus et Grafana.<\/p>\n<h3><a href=\"https:\/\/prometheus.io\/docs\/introduction\/overview\/\">Prometheus<\/a>\u00a0et\u00a0<a href=\"https:\/\/grafana.com\/\">Grafana<\/a><\/h3>\n<p>Modules surveillant les activit\u00e9s dans la grappe Kubernetes. D\u00e9velopp\u00e9 par SoundCloud, Prometheus se veut une solution compl\u00e8te pour visualiser et journaliser les donn\u00e9es transf\u00e9r\u00e9es dans la grappe. Ses principales fonctionnalit\u00e9s comprennent des mod\u00e8les de donn\u00e9es \u00e9volu\u00e9s pour les ressources de Kubernetes, un langage de recherche polyvalent et de nombreux types de graphes et de tableaux de bord. Grafana est un logiciel de visualisation permettant \u00e0 l\u2019utilisateur de mieux saisir ce qui se passe dans la grappe Kubernetes. Grafana restitue les donn\u00e9es sous forme de graphes, de formules, de mesures et de cartes, ce qui simplifie la supervision d\u2019une grappe complexe.<\/p>\n<p>Grafana est dot\u00e9 d\u2019un\u00a0<a href=\"https:\/\/prometheus.io\/docs\/visualization\/grafana\/\" target=\"_blank\" rel=\"noopener\">soutien int\u00e9gr\u00e9<\/a>\u00a0pour les recherches sur Prometheus. Le logiciel r\u00e9cup\u00e8re les donn\u00e9es glan\u00e9es par Prometheus et les affiche de mani\u00e8re structur\u00e9e gr\u00e2ce \u00e0 une interface graphique au moyen de laquelle l\u2019utilisateur peut suivre l\u2019activit\u00e9 des ressources dans un espace de nommage donn\u00e9 de la grappe.<\/p>\n<h2>Applications<\/h2>\n<h3>Vue.js (application frontale)<\/h3>\n<p>Cadriciel ouvert en JavaScript servant \u00e0 b\u00e2tir des interfaces utilisateur. Il int\u00e8gre le c\u00f4t\u00e9 r\u00e9actif de la conception Web permettant de connecter la partie en JavaScript au code HTML. Quand les donn\u00e9es du composant en JavaScript changent, l\u2019interface (HTML\/CSS) se reconfigure automatiquement.<\/p>\n<p>Dans notre Propulseur, l\u2019application Vue.js fonctionne sous la forme d\u2019une application frontale d\u2019une page, c\u2019est-\u00e0-dire une interface graphique avec laquelle l\u2019utilisateur lance les appels RESTful habituels \u00e0 l\u2019application dorsale sans avoir \u00e0 interagir directement avec elle.<\/p>\n<p>Pour les invites de l\u2019API, l\u2019application recourt \u00e0 un outil baptis\u00e9 \u00ab\u00a0Axios\u00a0\u00bb de la biblioth\u00e8que JavaScript. Cet outil configure la requ\u00eate en format HTTP de base avant de l\u2019exp\u00e9dier au serveur dorsal.<\/p>\n<table border=\"1\">\n<tbody>\n<tr>\n<td><strong>M\u00e9thode<\/strong><\/td>\n<td><strong>Description<\/strong><\/td>\n<\/tr>\n<tr>\n<td>OBTENIR (GET)<\/td>\n<td>Au chargement de la page, l\u2019application ex\u00e9cute automatiquement une commande qui r\u00e9cup\u00e8re les choses de la liste (<strong>todos<\/strong>) qui n\u2019ont pas encore \u00e9t\u00e9 faites dans la base de donn\u00e9es.<\/td>\n<\/tr>\n<tr>\n<td>AFFICHER (POST)<\/td>\n<td width=\"549\">Encadr\u00e9 demandant \u00e0 l\u2019utilisateur ce qu\u2019il y a \u00ab\u00a0\u00e0 faire\u00a0\u00bb pour l\u2019inciter \u00e0 ajouter des choses \u00e0 la liste.<\/td>\n<\/tr>\n<tr>\n<td>MODIFIER (PUT)<\/td>\n<td width=\"549\">En double-cliquant une chose \u00e0 faire, l\u2019utilisateur peut la modifier. La touche \u00c9CHAP annule la modification.<\/td>\n<\/tr>\n<tr>\n<td>SUPPRIMER (DELETE)<\/td>\n<td>En survolant les choses encore \u00e0 faire avec la souris et en cliquant le \u00ab\u00a0x\u00a0\u00bb rouge, on supprimera la chose en question de la liste.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Le CSS utilis\u00e9 pour ex\u00e9cuter l\u2019application est d\u00e9riv\u00e9 du mod\u00e8le suivant\u00a0:<\/p>\n<p><a href=\"https:\/\/github.com\/Klerith\/TODO-CSS-Template\" target=\"_blank\" rel=\"noopener\">https:\/\/GitHub.com\/Klerith\/TODO-CSS-Template<\/a><\/p>\n<p>Pour acc\u00e9der au r\u00e9pertoire dans lequel figurent les fichiers Vue.js, suivre le chemin\u00a0:<\/p>\n<p><a href=\"https:\/\/github.com\/BigBitBusInc\/kubernetes-automation-toolkit\/tree\/main\/code\/app-code\/frontend\/todo-vuejs\" target=\"_blank\" rel=\"noopener\">https:\/\/GitHub.com\/BigBitBusInc\/kubernetes-automation-toolkit\/tree\/main\/code\/app-code\/frontend\/ToDo-vuejs<\/a><\/p>\n<p>Le code sous-jacent pr\u00e9sent\u00e9 \u00e0 l\u2019utilisateur figure plus loin dans src\/App.vue. Ne sont pr\u00e9sent\u00e9s ici que les composants HTML\/CSS de base portant l\u2019\u00e9tiquette &lt;template&gt; et les composants JavaScript portant l\u2019\u00e9tiquette &lt;script&gt;.<\/p>\n<p>Pour en savoir plus sur Vue.js, aller \u00e0\u00a0:\u00a0<a href=\"https:\/\/vuejs.org\/v2\/guide\/\" target=\"_blank\" rel=\"noopener\">Introduction \u2014 Vue.js<\/a><\/p>\n<h3>Django (application dorsale)<\/h3>\n<p>Cadriciel Web ouvert en Python \u00e9tablissant les composants de base d\u2019un projet en vue d\u2019une application Web. Ainsi, l\u2019utilisateur peut consacrer plus de temps au d\u00e9veloppement et moins au d\u00e9ploiement. La syntaxe est facile \u00e0 saisir et comprend l\u2019architecture de base d\u2019un serveur Web.<\/p>\n<p>Dans notre Propulseur, l\u2019application Django fait office d\u2019application dorsale qui \u00e9tablit l\u2019API\u00a0<strong>todos<\/strong>. Elle prend en charge les appels de l\u2019API et envoie ou r\u00e9cup\u00e8re l\u2019information dans la base de donn\u00e9es.<\/p>\n<p>Au d\u00e9marrage, l\u2019application cr\u00e9e une liste \u00ab\u00a0<strong>todo<\/strong>\u00a0\u00bb mod\u00e8le avec pour attributs, notamment, le titre et la description d\u2019une chose \u00e0 faire (<strong>todo<\/strong>), principal objet sur lequel repose l\u2019application. Celle-ci \u00e9tablit une connexion avec la base de donn\u00e9es et y envoie l\u2019information du mod\u00e8le par migration. Ensuite, la base de donn\u00e9es produit un tableau pr\u00e9sentant l\u2019ensemble des objets\u00a0<strong>todo<\/strong>.<\/p>\n<p>Avec comme routeur le \u00ab\u00a0DefaultRouter\u00a0\u00bb de Django, l\u2019application cartographie automatiquement les requ\u00eates HTTP de l\u2019application frontale en regard du jeu d\u2019objets\u00a0<strong>todo<\/strong>\u00a0gr\u00e2ce \u00e0 un ensemble \u00ab\u00a0Viewset\u00a0\u00bb. \u00ab\u00a0Viewset\u00a0\u00bb utilise des op\u00e9rations comme \u00e9num\u00e9rer, cr\u00e9er, actualiser et supprimer qui modifient le contenu de la base de donn\u00e9es chaque fois que les objets changent. Par exemple, quand on ajoute un objet\u00a0<strong>todo\u00a0<\/strong>avec l\u2019application Vue.js, le routeur saisit la requ\u00eate, la cartographie selon sa m\u00e9thode et l\u2019exp\u00e9die dans \u00ab\u00a0Viewset\u00a0\u00bb, qui la prend en charge par l\u2019op\u00e9ration \u00ab\u00a0cr\u00e9er\u00a0\u00bb du mod\u00e8le. Quand la liste d\u2019objets\u00a0<strong>todo<\/strong>\u00a0est modifi\u00e9e, l\u2019application Vue.js r\u00e9agit en actualisant la page.<\/p>\n<p>Le code de l\u2019API\u00a0<strong>todos<\/strong>\u00a0a \u00e9t\u00e9 d\u00e9riv\u00e9 de l\u2019original, disponible \u00e0 l\u2019adresse\u00a0:\u00a0<a href=\"https:\/\/github.com\/wsvincent\/drf-todo-api\" target=\"_blank\" rel=\"noopener\">GitHub \u2013 wsvincent\/drf-todo-api: Django REST Framework Todo API Tutorial<\/a><\/p>\n<p>Pour voir le r\u00e9pertoire groupant tous les fichiers de code Django, on suivra le chemin\u00a0<a href=\"https:\/\/github.com\/BigBitBusInc\/kubernetes-automation-toolkit\/tree\/main\/code\/app-code\/api\/todo-python-django\" target=\"_blank\" rel=\"noopener\">kubernetes-automation-toolkit\/code\/app-code\/api\/todo-python-django at main \u00b7 BigBitBusInc\/kubernetes-automation-toolkit \u00b7 GitHub<\/a><\/p>\n<p>Pour en savoir plus sur le cadriciel REST de Django, lire\u00a0:\u00a0<a href=\"https:\/\/docs.djangoproject.com\/fr\/3.1\/\" target=\"_blank\" rel=\"noopener\">https:\/\/docs.djangoproject.com\/fr\/3.1\/<\/a><\/p>\n<h1>Autres consid\u00e9rations<\/h1>\n<h2>S\u00e9curit\u00e9<\/h2>\n<p>La MV de l\u2019ATIR sur laquelle fonctionne la grappe Kubernetes h\u00e9bergeant l\u2019application\u00a0<strong>todos<\/strong>\u00a0n\u2019est accessible\u00a0<em>que\u00a0<\/em>sur le port\u00a022 (SSH). Pour explorer l\u2019application et les points terminaux de Grafana, nous recourons \u00e0 une tunnellisation s\u00e9curis\u00e9e entre l\u2019ordinateur et la MV. Les rustines de s\u00e9curit\u00e9 sont automatiquement appliqu\u00e9es \u00e0 la MV d\u2019Ubuntu par le mod\u00e8le de l\u2019application (Application Blueprint).<\/p>\n<p>Les formules Helm (Charts) de l\u2019\u00e9chantillon comprennent des blocs de code TLS\/SSL comment\u00e9s qu\u2019il est possible d\u2019activer avec un certificat TLS valable pour le domaine. En r\u00e9alit\u00e9, on ne se connecterait pas avec un tunnel SSH, mais par encryptage TLS en utilisant le protocole s\u00e9curis\u00e9 HTTPS. Les fichiers \u00ab\u00a0values.YAML\u00a0\u00bb comprennent des parties non comment\u00e9es, ce qui vous permettra d\u2019utiliser vos propres certificats SSL quand viendra le moment de d\u00e9ployer l\u2019application afin que des utilisateurs de l\u2019ext\u00e9rieur puissent s\u2019en servir. Pour en savoir plus sur le fonctionnement de la couche TLS et des composants d\u2019entr\u00e9e, lisez\u00a0<a href=\"https:\/\/kubernetes.github.io\/ingress-nginx\/examples\/tls-termination\/\" target=\"_blank\" rel=\"noopener\">ceci<\/a>.<\/p>\n<p>Dans la solution mod\u00e8le KAT, nous avons attribu\u00e9 les justificatifs de l\u2019administrateur de Kubernetes (root-admin) \u00e0 l\u2019utilisateur de la MV. En fait, comme c\u2019est le cas pour n\u2019importe quelle grappe de production dans laquelle de multiples utilisateurs ou services ont acc\u00e8s \u00e0 Kubernetes, l\u2019id\u00e9al consiste \u00e0 utiliser le\u00a0<a href=\"https:\/\/kubernetes.io\/docs\/reference\/access-authn-authz\/rbac\/\" target=\"_blank\" rel=\"noopener\">contr\u00f4le des acc\u00e8s bas\u00e9 sur les r\u00f4les<\/a>. Nous vous encourageons \u00e0 examiner les nombreux aspects associ\u00e9s \u00e0 la s\u00e9curit\u00e9 avant d\u2019utiliser Kubernetes dans un environnement de production.<\/p>\n<p>Nous nous sommes servis de la fonction \u00ab\u00a0secrets\u00a0\u00bb de Kubernetes (pour stocker le mot de passe Postgres, par exemple, et l\u2019appliquer \u00e0 la formule Helm); nous pr\u00e9conisons l\u2019usage de cette fonction plut\u00f4t que de configmaps en texte clair quand Kubernetes stocke des donn\u00e9es sensibles.<\/p>\n<p>Voici quelques excellentes ressources pour vous aider \u00e0 d\u00e9marrer si vous voulez en apprendre davantage sur la s\u00e9curit\u00e9 et Kubernetes.<\/p>\n<ol>\n<li>\n<ol>\n<li>Documentation officielle de Kubernetes sur la s\u00e9curisation des grappes\u00a0:\u00a0<a href=\"https:\/\/kubernetes.io\/docs\/concepts\/security\/\" target=\"_blank\" rel=\"noopener\">https:\/\/kubernetes.io\/docs\/concepts\/security\/<\/a><u>\u00a0<\/u><\/li>\n<li>Gestion automatique des certificats avec Cert-Manager en cloud-native\u00a0:\u00a0<a href=\"https:\/\/cert-manager.io\/\" target=\"_blank\" rel=\"noopener\">https:\/\/cert-manager.io\/<\/a><\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<h2>R\u00e9seau<\/h2>\n<p>Comme nous l\u2019avons d\u00e9j\u00e0 mentionn\u00e9, les composants d\u2019entr\u00e9e NGINX servent \u00e0 rendre les points terminaux de l\u2019application visibles au monde ext\u00e9rieur. Apr\u00e8s avoir cr\u00e9\u00e9 la MV dans l\u2019ATIR, creusez un tunnel SSH entre le port local 8080 et le port HTTP 80 de la MV.<\/p>\n<p>Cela fait, l\u2019utilisateur pourra acc\u00e9der aux composants de l\u2019application avec le navigateur de son ordinateur aux endroits indiqu\u00e9s. Attention\u00a0: le trait oblique final est obligatoire!<\/p>\n<p><strong>Points terminaux (apr\u00e8s connexion \u00e0 l\u2019h\u00f4te local 8080 par le tunnel SSH)<\/strong><\/p>\n<table border=\"1\">\n<tbody>\n<tr>\n<td>Application frontale\u00a0<strong>todos<\/strong><\/td>\n<td>http:\/\/localhost:8080\/frontend\/<\/td>\n<\/tr>\n<tr>\n<td>API dorsale<\/td>\n<td>http:\/\/localhost:8080\/djangoapi\/<\/td>\n<\/tr>\n<tr>\n<td>Syst\u00e8me de surveillance Grafana<\/td>\n<td>http:\/\/localhost:8080\/monitoring-grafana\/<\/td>\n<\/tr>\n<tr>\n<td>Tableau de bord Kubernetes<\/td>\n<td>http:\/\/localhost:8080\/dashboard\/<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>La solution type KAT utilise Ingress Controller de NGINX, ce qui ouvre une foule de possibilit\u00e9s pour configurer les demandes de routage et de r\u00e9seautage de la couche\u00a07. Le serveur NGINX fait office de serveur de procuration invers\u00e9 et d\u2019\u00e9quilibreur de charge. NGINX est extr\u00eamement polyvalent et propose de nombreuses options pour configurer le trafic.<\/p>\n<p>Apprenez en plus sur NGINX Ingress de Kubernetes\u00a0<a href=\"https:\/\/github.com\/kubernetes\/ingress-nginx\" target=\"_blank\" rel=\"noopener\">ici<\/a>.<\/p>\n<h2>Mise \u00e0 l\u2019\u00e9chelle<\/h2>\n<p>Les fichiers \u00ab\u00a0values.YAML\u00a0\u00bb dans les formules Helm des applications frontale et dorsale ont un param\u00e8tre appel\u00e9 \u00ab\u00a0replicas\u00a0\u00bb qui peut \u00eatre modifi\u00e9 en fonction du nombre de r\u00e9pliques. L\u2019Horizontal Pod Autoscaler de Kubernetes est \u00e9galement activ\u00e9, si bien que le nombre de r\u00e9pliques s\u2019ajuste automatiquement en fonction de l\u2019utilisation de l\u2019UCT par les Pods. Voir les fichiers \u00ab\u00a0values.YAML\u00a0\u00bb dans les formules Helm pour comprendre comment ces param\u00e8tres sont configur\u00e9s. N\u2019h\u00e9sitez pas \u00e0 exp\u00e9rimenter en fixant le nombre de r\u00e9pliques dans chaque fichier values.YAML employ\u00e9 pour le d\u00e9ploiement.<\/p>\n<h2>Disponibilit\u00e9<\/h2>\n<p>Kubernetes peut cr\u00e9er de nombreux Pods qui utiliseront le m\u00eame logiciel (l\u2019application dorsale de Django ou l\u2019application frontale Vue.js, par exemple). L\u2019application est donc tr\u00e8s facilement accessible. Cette particularit\u00e9 rev\u00eat une importance particuli\u00e8re quand on recourt \u00e0 une grappe Kubernetes \u00e0 n\u0153uds multiples. Par exemple, si on l\u2019ex\u00e9cute dans une grappe de ce genre, l\u2019application\u00a0<strong>todos\u00a0<\/strong>restera active m\u00eame si un n\u0153ud d\u00e9faille. Kubernetes d\u00e9tectera puis relancera automatiquement le n\u0153ud d\u00e9fectueux. L\u2019utilisateur ne s\u2019en rendra pas compte, ce qui simplifie consid\u00e9rablement le travail technique requis quand on doit exploiter et maintenir des applications sur une plateforme de production d\u2019une grande accessibilit\u00e9.<\/p>\n<h2>Co\u00fbt<\/h2>\n<p>Habituellement, la taille de la grappe Kubernetes est proportionnelle au nombre de n\u0153uds d\u2019ex\u00e9cution qu\u2019elle abrite. Dans la solution type KAT, nous nous contentons d\u2019une grappe \u00e0 un n\u0153ud sur une seule machine virtuelle, mais les n\u0153uds d\u2019ex\u00e9cution et de contr\u00f4le seront plus nombreux dans la r\u00e9alit\u00e9, et les frais de r\u00e9seau de m\u00eame que ceux d\u2019\u00e9quilibrage de la charge pourraient s\u2019accro\u00eetre sensiblement avec l\u2019expansion de la grappe. Pour avoir une id\u00e9e du co\u00fbt \u00ab\u00a0r\u00e9el\u00a0\u00bb d\u2019une grappe Kubernetes, nous vous sugg\u00e9rons de recourir \u00e0 la calculatrice d\u2019un des nuages publics, par exemple\u00a0:<\/p>\n<p>Google :\u00a0<a href=\"https:\/\/cloud.google.com\/products\/calculator\" target=\"_blank\" rel=\"noopener\">https:\/\/cloud.google.com\/products\/calculator<\/a><\/p>\n<p>Amazon AWS :\u00a0<a href=\"https:\/\/calculator.aws\/#\/\" target=\"_blank\" rel=\"noopener\">https:\/\/calculator.aws\/#\/<\/a><\/p>\n<p>Microsoft Azure :\u00a0<a href=\"https:\/\/azure.microsoft.com\/en-us\/pricing\/calculator\/\" target=\"_blank\" rel=\"noopener\">https:\/\/azure.microsoft.com\/en-us\/pricing\/calculator\/<\/a><\/p>\n<h2>Licence d\u2019exploitation<\/h2>\n<p>Tous les composants de la solution type KAT sont vis\u00e9s par une licence de source ouverte; veuillez vous rapporter au d\u00e9p\u00f4t de la source correspondante pour en savoir plus sur les conditions qui s\u2019y associent. La licence pour le code du Propulseur KAT et la documentation connexe sont disponibles ici\u00a0:<\/p>\n<p><a href=\"https:\/\/github.com\/BigBitBusInc\/kubernetes-automation-toolkit\/blob\/main\/LICENSE.md\" target=\"_blank\" rel=\"noopener\">https:\/\/GitHub.com\/BigBitBusInc\/kubernetes-automation-toolkit\/blob\/main\/LICENSE.md<\/a><\/p>\n<h2>Code source<\/h2>\n<p>On trouvera le code source \u00e0 jour ici :<\/p>\n<p><a href=\"https:\/\/github.com\/BigBitBusInc\/kubernetes-automation-toolkit\" target=\"_blank\" rel=\"noopener\">https:\/\/GitHub.com\/BigBitBusInc\/kubernetes-automation-toolkit<\/a><\/p>\n<h1>Glossaire<\/h1>\n<p>Termes et expressions utilis\u00e9s dans le document.<\/p>\n<table border=\"1\">\n<tbody>\n<tr>\n<td><strong>Expression<\/strong><\/td>\n<td width=\"255\"><strong>Description<\/strong><\/td>\n<td width=\"219\"><strong>Lien\/Compl\u00e9ment d\u2019information<\/strong><\/td>\n<\/tr>\n<tr>\n<td>Django<\/td>\n<td>Cadriciel Web gratuit de source ouverte en Python<\/td>\n<td>\n<ul>\n<li><a href=\"https:\/\/www.djangoproject.com\/\" target=\"_blank\" rel=\"noopener\">Documentation officielle de Django<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/BigBitBusInc\/kubernetes-automation-toolkit\/blob\/main\/code\/app-code\/api\/todo-python-django\" target=\"_blank\" rel=\"noopener\">Illustration d\u2019une API dorsale du genre \u00ab choses \u00e0 faire \u00bb r\u00e9dig\u00e9e en Django<\/a><\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<tr>\n<td>Helm<\/td>\n<td>Gestionnaire de paquets pour Kubernetes<\/td>\n<td>\n<ul>\n<li><a href=\"https:\/\/helm.sh\/\" target=\"_blank\" rel=\"noopener\">Documentation officielle sur Helm<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/BigBitBusInc\/kubernetes-automation-toolkit\/blob\/main\/code\/app-code\/api\/todo-python-django\/kubecode\/bigbitbus-dj-py-api\" target=\"_blank\" rel=\"noopener\">Illustration d\u2019une formule Helm (Chart) dans le pr\u00e9sent d\u00e9p\u00f4t<\/a><\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<tr>\n<td>Kubernetes<\/td>\n<td>Syst\u00e8me d\u2019orchestration de conteneurs ouvert automatisant le d\u00e9ploiement, la mise \u00e0 l\u2019\u00e9chelle et la gestion d\u2019une application<\/td>\n<td>\n<ul>\n<li><a href=\"https:\/\/kubernetes.io\/\" target=\"_blank\" rel=\"noopener\">Kubernetes<\/a><\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<tr>\n<td>Microk8s<\/td>\n<td>Syst\u00e8me de distribution Kubernetes all\u00e9g\u00e9, pr\u00eat \u00e0 l\u2019emploi<\/td>\n<td>\n<ul>\n<li><a href=\"https:\/\/microk8s.io\/\" target=\"_blank\" rel=\"noopener\">Microk8s<\/a><\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<tr>\n<td>PostgresSQL<\/td>\n<td>Syst\u00e8me de gestion ouvert pour les bases de donn\u00e9es relationnelles<\/td>\n<td>\n<ul>\n<li><a href=\"https:\/\/www.postgresql.org\/\" target=\"_blank\" rel=\"noopener\">PostgreSQL<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/BigBitBusInc\/kubernetes-automation-toolkit\/blob\/main\/code\/k8s-common-code\/postgres-db\" target=\"_blank\" rel=\"noopener\">Illustration d\u2019une configuration Postgres dans Kubernetes<\/a><\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<tr>\n<td>Prometheus et Grafana<\/td>\n<td>Base de donn\u00e9es chronologiques et syst\u00e8me de recherche de donn\u00e9es avec interface utilisateur<\/td>\n<td>\n<ul>\n<li><a href=\"https:\/\/prometheus.io\/\" target=\"_blank\" rel=\"noopener\">Documentation officielle sur Prometheus<\/a><\/li>\n<li><a style=\"font-family: inherit; font-size: inherit;\" href=\"https:\/\/github.com\/BigBitBusInc\/kubernetes-automation-toolkit\/blob\/main\/code\/k8s-common-code\/monitoring\" target=\"_blank\" rel=\"noopener\">Illustration de la configuration d\u2019une pile Prometheus<\/a><\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<tr>\n<td>Skaffold<\/td>\n<td>A build and deploy tool for Kubernetes<\/td>\n<td>\n<ul>\n<li><a href=\"https:\/\/skaffold.dev\/\" target=\"_blank\" rel=\"noopener\">Outil de construction et de d\u00e9ploiement pour Kubernetes<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/BigBitBusInc\/kubernetes-automation-toolkit\/blob\/main\/code\/app-code\/api\/todo-python-django\/skaffold.yml\" target=\"_blank\" rel=\"noopener\">Documentation officielle sur Skaffold<\/a><\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<tr>\n<td>Vue.js<\/td>\n<td>Illustration d\u2019un fichier de d\u00e9finition Skaffold en YAML<\/td>\n<td>\n<ul>\n<li><a href=\"https:\/\/vuejs.org\/\" target=\"_blank\" rel=\"noopener\">Documentation officielle sur Vue.js<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/BigBitBusInc\/kubernetes-automation-toolkit\/blob\/main\/code\/app-code\/frontend\/todo-vuejs\" target=\"_blank\" rel=\"noopener\">Illustration d\u2019une application frontale To-Do en Vue<\/a>.js<\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n                    <div class=\"button-group\">\n              \t\t\t\t  \t<a class=\"button-border-blue\" href=\"https:\/\/www.canarie.ca\/fr\/nuage\/propulseurs\/catalogue\/plan-de-vol-ido-automatisation-de-lorchestration-en-nuage-avec-kubernetes\/\" target=\"_self\">Plan de vol <\/a>\n    \t\t\t    \t\t\t    \t\t\t<\/div>\n    \t\t\t        <\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Solution type Formule de la solution Grafana et Prometheus sont d\u00e9ploy\u00e9s dans la grappe pour assurer la surveillance. Le tableau [&hellip;]<\/p>\n","protected":false},"author":19,"featured_media":0,"parent":18680,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-19251","page","type-page","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Solution type: Kubernetes Automation Toolkit (KAT) - CANARIE<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.canarie.ca\/fr\/nuage\/catalogue\/plan-de-vol-ido-automatisation-de-lorchestration-en-nuage-avec-kubernetes\/solution-type-trousse-dautomatisation-kubernetes-kat\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Solution type: Kubernetes Automation Toolkit (KAT) - CANARIE\" \/>\n<meta property=\"og:description\" content=\"Solution type Formule de la solution Grafana et Prometheus sont d\u00e9ploy\u00e9s dans la grappe pour assurer la surveillance. Le tableau [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.canarie.ca\/fr\/nuage\/catalogue\/plan-de-vol-ido-automatisation-de-lorchestration-en-nuage-avec-kubernetes\/solution-type-trousse-dautomatisation-kubernetes-kat\/\" \/>\n<meta property=\"og:site_name\" content=\"CANARIE\" \/>\n<meta property=\"article:modified_time\" content=\"2024-10-30T13:48:16+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/boosterpacks.cloud.canarie.ca\/wp-content\/uploads\/Picture1.png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.canarie.ca\\\/fr\\\/nuage\\\/catalogue\\\/plan-de-vol-ido-automatisation-de-lorchestration-en-nuage-avec-kubernetes\\\/solution-type-trousse-dautomatisation-kubernetes-kat\\\/\",\"url\":\"https:\\\/\\\/www.canarie.ca\\\/fr\\\/nuage\\\/catalogue\\\/plan-de-vol-ido-automatisation-de-lorchestration-en-nuage-avec-kubernetes\\\/solution-type-trousse-dautomatisation-kubernetes-kat\\\/\",\"name\":\"Solution type: Kubernetes Automation Toolkit (KAT) - CANARIE\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.canarie.ca\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.canarie.ca\\\/fr\\\/nuage\\\/catalogue\\\/plan-de-vol-ido-automatisation-de-lorchestration-en-nuage-avec-kubernetes\\\/solution-type-trousse-dautomatisation-kubernetes-kat\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.canarie.ca\\\/fr\\\/nuage\\\/catalogue\\\/plan-de-vol-ido-automatisation-de-lorchestration-en-nuage-avec-kubernetes\\\/solution-type-trousse-dautomatisation-kubernetes-kat\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/boosterpacks.cloud.canarie.ca\\\/wp-content\\\/uploads\\\/Picture1.png\",\"datePublished\":\"2021-03-09T17:14:24+00:00\",\"dateModified\":\"2024-10-30T13:48:16+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.canarie.ca\\\/fr\\\/nuage\\\/catalogue\\\/plan-de-vol-ido-automatisation-de-lorchestration-en-nuage-avec-kubernetes\\\/solution-type-trousse-dautomatisation-kubernetes-kat\\\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.canarie.ca\\\/fr\\\/nuage\\\/catalogue\\\/plan-de-vol-ido-automatisation-de-lorchestration-en-nuage-avec-kubernetes\\\/solution-type-trousse-dautomatisation-kubernetes-kat\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/www.canarie.ca\\\/fr\\\/nuage\\\/catalogue\\\/plan-de-vol-ido-automatisation-de-lorchestration-en-nuage-avec-kubernetes\\\/solution-type-trousse-dautomatisation-kubernetes-kat\\\/#primaryimage\",\"url\":\"https:\\\/\\\/boosterpacks.cloud.canarie.ca\\\/wp-content\\\/uploads\\\/Picture1.png\",\"contentUrl\":\"https:\\\/\\\/boosterpacks.cloud.canarie.ca\\\/wp-content\\\/uploads\\\/Picture1.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.canarie.ca\\\/fr\\\/nuage\\\/catalogue\\\/plan-de-vol-ido-automatisation-de-lorchestration-en-nuage-avec-kubernetes\\\/solution-type-trousse-dautomatisation-kubernetes-kat\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/www.canarie.ca\\\/fr\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Le nuage de l&#8217;ATIR\",\"item\":\"https:\\\/\\\/www.canarie.ca\\\/fr\\\/?page_id=44361\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Catalogue des Propulseurs de l\u2019ATIR\",\"item\":\"https:\\\/\\\/www.canarie.ca\\\/fr\\\/?page_id=6557\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Plan de vol : IdO \u2013 Automatisation de l\u2019orchestration en nuage avec Kubernetes\",\"item\":\"https:\\\/\\\/www.canarie.ca\\\/fr\\\/nuage\\\/catalogue\\\/plan-de-vol-ido-automatisation-de-lorchestration-en-nuage-avec-kubernetes\\\/\"},{\"@type\":\"ListItem\",\"position\":5,\"name\":\"Solution type: Kubernetes Automation Toolkit (KAT)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.canarie.ca\\\/#website\",\"url\":\"https:\\\/\\\/www.canarie.ca\\\/\",\"name\":\"CANARIE\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.canarie.ca\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Solution type: Kubernetes Automation Toolkit (KAT) - CANARIE","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.canarie.ca\/fr\/nuage\/catalogue\/plan-de-vol-ido-automatisation-de-lorchestration-en-nuage-avec-kubernetes\/solution-type-trousse-dautomatisation-kubernetes-kat\/","og_locale":"fr_FR","og_type":"article","og_title":"Solution type: Kubernetes Automation Toolkit (KAT) - CANARIE","og_description":"Solution type Formule de la solution Grafana et Prometheus sont d\u00e9ploy\u00e9s dans la grappe pour assurer la surveillance. Le tableau [&hellip;]","og_url":"https:\/\/www.canarie.ca\/fr\/nuage\/catalogue\/plan-de-vol-ido-automatisation-de-lorchestration-en-nuage-avec-kubernetes\/solution-type-trousse-dautomatisation-kubernetes-kat\/","og_site_name":"CANARIE","article_modified_time":"2024-10-30T13:48:16+00:00","og_image":[{"url":"https:\/\/boosterpacks.cloud.canarie.ca\/wp-content\/uploads\/Picture1.png","type":"","width":"","height":""}],"twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.canarie.ca\/fr\/nuage\/catalogue\/plan-de-vol-ido-automatisation-de-lorchestration-en-nuage-avec-kubernetes\/solution-type-trousse-dautomatisation-kubernetes-kat\/","url":"https:\/\/www.canarie.ca\/fr\/nuage\/catalogue\/plan-de-vol-ido-automatisation-de-lorchestration-en-nuage-avec-kubernetes\/solution-type-trousse-dautomatisation-kubernetes-kat\/","name":"Solution type: Kubernetes Automation Toolkit (KAT) - CANARIE","isPartOf":{"@id":"https:\/\/www.canarie.ca\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.canarie.ca\/fr\/nuage\/catalogue\/plan-de-vol-ido-automatisation-de-lorchestration-en-nuage-avec-kubernetes\/solution-type-trousse-dautomatisation-kubernetes-kat\/#primaryimage"},"image":{"@id":"https:\/\/www.canarie.ca\/fr\/nuage\/catalogue\/plan-de-vol-ido-automatisation-de-lorchestration-en-nuage-avec-kubernetes\/solution-type-trousse-dautomatisation-kubernetes-kat\/#primaryimage"},"thumbnailUrl":"https:\/\/boosterpacks.cloud.canarie.ca\/wp-content\/uploads\/Picture1.png","datePublished":"2021-03-09T17:14:24+00:00","dateModified":"2024-10-30T13:48:16+00:00","breadcrumb":{"@id":"https:\/\/www.canarie.ca\/fr\/nuage\/catalogue\/plan-de-vol-ido-automatisation-de-lorchestration-en-nuage-avec-kubernetes\/solution-type-trousse-dautomatisation-kubernetes-kat\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.canarie.ca\/fr\/nuage\/catalogue\/plan-de-vol-ido-automatisation-de-lorchestration-en-nuage-avec-kubernetes\/solution-type-trousse-dautomatisation-kubernetes-kat\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/www.canarie.ca\/fr\/nuage\/catalogue\/plan-de-vol-ido-automatisation-de-lorchestration-en-nuage-avec-kubernetes\/solution-type-trousse-dautomatisation-kubernetes-kat\/#primaryimage","url":"https:\/\/boosterpacks.cloud.canarie.ca\/wp-content\/uploads\/Picture1.png","contentUrl":"https:\/\/boosterpacks.cloud.canarie.ca\/wp-content\/uploads\/Picture1.png"},{"@type":"BreadcrumbList","@id":"https:\/\/www.canarie.ca\/fr\/nuage\/catalogue\/plan-de-vol-ido-automatisation-de-lorchestration-en-nuage-avec-kubernetes\/solution-type-trousse-dautomatisation-kubernetes-kat\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.canarie.ca\/fr\/"},{"@type":"ListItem","position":2,"name":"Le nuage de l&#8217;ATIR","item":"https:\/\/www.canarie.ca\/fr\/?page_id=44361"},{"@type":"ListItem","position":3,"name":"Catalogue des Propulseurs de l\u2019ATIR","item":"https:\/\/www.canarie.ca\/fr\/?page_id=6557"},{"@type":"ListItem","position":4,"name":"Plan de vol : IdO \u2013 Automatisation de l\u2019orchestration en nuage avec Kubernetes","item":"https:\/\/www.canarie.ca\/fr\/nuage\/catalogue\/plan-de-vol-ido-automatisation-de-lorchestration-en-nuage-avec-kubernetes\/"},{"@type":"ListItem","position":5,"name":"Solution type: Kubernetes Automation Toolkit (KAT)"}]},{"@type":"WebSite","@id":"https:\/\/www.canarie.ca\/#website","url":"https:\/\/www.canarie.ca\/","name":"CANARIE","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.canarie.ca\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"}]}},"_links":{"self":[{"href":"https:\/\/www.canarie.ca\/fr\/wp-json\/wp\/v2\/pages\/19251","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.canarie.ca\/fr\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.canarie.ca\/fr\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.canarie.ca\/fr\/wp-json\/wp\/v2\/users\/19"}],"replies":[{"embeddable":true,"href":"https:\/\/www.canarie.ca\/fr\/wp-json\/wp\/v2\/comments?post=19251"}],"version-history":[{"count":4,"href":"https:\/\/www.canarie.ca\/fr\/wp-json\/wp\/v2\/pages\/19251\/revisions"}],"predecessor-version":[{"id":44501,"href":"https:\/\/www.canarie.ca\/fr\/wp-json\/wp\/v2\/pages\/19251\/revisions\/44501"}],"up":[{"embeddable":true,"href":"https:\/\/www.canarie.ca\/fr\/wp-json\/wp\/v2\/pages\/18680"}],"wp:attachment":[{"href":"https:\/\/www.canarie.ca\/fr\/wp-json\/wp\/v2\/media?parent=19251"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}