<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>SENETECH</title>
	<atom:link href="https://senetech.eu/feed/" rel="self" type="application/rss+xml" />
	<link>https://senetech.eu/</link>
	<description>Infrastructure, cybersécurité et transformation numérique</description>
	<lastBuildDate>Sun, 25 Oct 2026 05:11:54 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.3</generator>

<image>
	<url>https://senetech.eu/wp-content/uploads/2024/06/cropped-1-32x32.png</url>
	<title>SENETECH</title>
	<link>https://senetech.eu/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>PHP2Shell : deux failles critiques dans PHP, ce qu’il faut faire maintenant</title>
		<link>https://senetech.eu/php2shell-failles-critiques-php-que-faire/</link>
		
		<dc:creator><![CDATA[admin8462]]></dc:creator>
		<pubDate>Sun, 25 Oct 2026 05:11:54 +0000</pubDate>
				<category><![CDATA[Cybersécurité]]></category>
		<guid isPermaLink="false">https://senetech.eu/?p=3379</guid>

					<description><![CDATA[<p>CVE-2026-109618 et CVE-2026-109619 : deux failles critiques permettent d’exécuter du code à distance sur les serveurs PHP. Versions concernées, correctifs et mesures à prendre.</p>
<p>The post <a href="https://senetech.eu/php2shell-failles-critiques-php-que-faire/">PHP2Shell : deux failles critiques dans PHP, ce qu’il faut faire maintenant</a> appeared first on <a href="https://senetech.eu">SENETECH</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><em>Article mis à jour le 24 octobre 2026.</em></p>
<p>Le 21 octobre 2026, le projet PHP a publié en urgence des versions correctives pour deux failles critiques, surnommées <strong>PHP2Shell</strong> : <strong>CVE-2026-109618</strong> et <strong>CVE-2026-109619</strong>. Elles permettent à un attaquant <strong>non authentifié</strong> d’exécuter du code à distance sur un serveur qui fait tourner PHP. Si votre site, votre extranet ou votre application métier repose sur PHP (WordPress, Drupal, Laravel, Symfony, Prestashop…), vous êtes potentiellement concerné.</p>
<h2>Que se passe-t-il ?</h2>
<p>Les deux failles touchent le cœur de PHP, et non une application en particulier :</p>
<ul>
<li><strong>CVE-2026-109618</strong> : lorsque PHP manque de mémoire pendant la préparation d’une requête, des données internes incomplètes peuvent ensuite être traitées comme valides, ce qui ouvre la voie à une exécution de code.</li>
<li><strong>CVE-2026-109619</strong> : un état interne lié à une requête peut survivre à la libération de sa mémoire et être réutilisé par une requête suivante traitée par le même processus.</li>
</ul>
<p>Le projet PHP leur attribue un score CVSS v4 de <strong>9,2 sur 10</strong>. Tous les modes d’exécution qui servent des requêtes web sont concernés : PHP-FPM, Apache avec mod_php, php-cgi, FrankenPHP et LiteSpeed. Le risque est jugé le plus élevé avec mod_php, car l’attaque peut se déclencher avant même l’exécution du code de l’application.</p>
<h2>Les failles sont-elles exploitées ?</h2>
<p>Plusieurs acteurs de la sécurité (Amazon, Cloudflare, watchTowr) indiquent avoir observé des tentatives d’exploitation, dont certaines dès le 17 octobre, avant la publication officielle. Les constats ne sont pas tous alignés : au moment de son alerte, l’agence américaine CISA n’avait pas observé d’exploitation. Du code présenté comme un exploit circule aussi publiquement, sans être vérifié : <strong>ne l’exécutez pas</strong>, il peut contenir des logiciels malveillants. Dans tous les cas, le niveau de risque justifie d’agir sans attendre.</p>
<h2>Quelles versions sont concernées ?</h2>
<ul>
<li><strong>PHP 8.5</strong> : corrigé en <strong>8.5.12</strong></li>
<li><strong>PHP 8.4</strong> : corrigé en <strong>8.4.27</strong></li>
<li><strong>PHP 8.3</strong> : corrigé en <strong>8.3.36</strong></li>
<li><strong>PHP 8.2</strong> : corrigé en <strong>8.2.35</strong></li>
<li><strong>PHP 8.1, 8.0, 7.4 et antérieures</strong> : versions en fin de vie, <strong>sans version corrigée officielle</strong>. L’équipe sécurité de PHP a seulement publié des correctifs minimaux à compiler soi-même pour 7.4, 8.0 et 8.1, et certaines distributions ou éditeurs de support étendu proposent leurs propres correctifs.</li>
</ul>
<p>Autrement dit, un serveur encore en PHP 8.1 ou plus ancien, chez un hébergeur mutualisé par exemple, reste exposé tant qu’il n’est pas migré vers une version supportée ou corrigé par son fournisseur.</p>
<h2>Que faire, concrètement ?</h2>
<ol>
<li><strong>Vérifiez votre version de PHP.</strong> Sur un serveur : <code>php -v</code>. Sur WordPress : Outils → Santé du site → Informations → Serveur. Chez un hébergeur : votre espace client.</li>
<li><strong>Mettez à jour</strong> vers 8.2.35, 8.3.36, 8.4.27 ou 8.5.12 (ou plus récent), via les paquets de votre distribution ou votre hébergeur. C’est la seule correction complète.</li>
<li><strong>Redémarrez</strong> tous les processus PHP (PHP-FPM, Apache) après la mise à jour, pour que la nouvelle version soit réellement utilisée.</li>
<li><strong>Si vous êtes en PHP 8.1 ou plus ancien</strong>, planifiez la migration vers une version supportée : c’est l’occasion de sortir d’une version qui ne reçoit plus de correctifs. En attendant, demandez à votre hébergeur s’il applique un correctif.</li>
<li><strong>N’oubliez pas les logiciels qui embarquent leur propre PHP</strong> (panneaux d’administration, appliances, outils internes) : vérifiez auprès de chaque éditeur.</li>
</ol>
<h2>Et si la mise à jour est impossible tout de suite ?</h2>
<p>Le projet PHP propose des mesures temporaires qui <strong>réduisent l’exposition sans rendre l’installation sûre</strong>. Elles doivent être appliquées dans la configuration serveur (<code>php.ini</code> ou pool PHP-FPM), puis suivies d’un redémarrage des processus PHP :</p>
<ul>
<li>désactiver le suivi de progression des uploads : <code>session.upload_progress.enabled = 0</code> ;</li>
<li>limiter la taille des requêtes (<code>post_max_size</code>) et imposer des limites au niveau du serveur web ou du proxy ;</li>
<li>sur PHP 8.5, définir <code>fatal_error_backtraces = 0</code>.</li>
</ul>
<p>D’autres réglages sont décrits dans l’avis officiel, avec des précautions importantes : appliquez-les en connaissance de cause, idéalement avec un administrateur système. Si un site exposé sur Internet ne peut pas être corrigé, le CERT-EU recommande de l’isoler en attendant.</p>
<h2>Une troisième faille à surveiller</h2>
<p>Le 23 octobre, PHP a signalé une autre faille, <strong>CVE-2026-115560</strong>, liée elle aussi au suivi de progression des uploads de session. Elle ne concerne que des configurations particulières et sera corrigée dans la prochaine version régulière. La mesure <code>session.upload_progress.enabled = 0</code> la neutralise également.</p>
<h2>En résumé</h2>
<p>Vérifiez votre version de PHP aujourd’hui, mettez à jour, redémarrez, et profitez-en pour faire le point sur les serveurs encore en version non supportée. Une politique de mises à jour régulière et automatisée reste la meilleure protection contre ce type d’alerte.</p>
<p>Besoin d’aide pour identifier vos serveurs exposés, mettre à jour PHP ou migrer depuis une version obsolète ? <a href="https://senetech.eu/contacts/">Contactez-nous</a> ou écrivez à <a href="mailto:contact@senetech.eu">contact@senetech.eu</a>.</p>
<h3>Sources</h3>
<ul>
<li><a href="https://www.php.net/archive/2026.php" target="_blank" rel="noopener">Avis de sécurité du projet PHP (php.net)</a></li>
<li><a href="https://cert.europa.eu/publications/security-advisories/2026-018" target="_blank" rel="noopener">CERT-EU – Critical Vulnerabilities in PHP</a></li>
<li><a href="https://www.tenable.com/blog/php2shell-cve-2026-109618-cve-2026-109619-frequently-asked-questions-about-critical-php-remote" target="_blank" rel="noopener">Tenable – FAQ PHP2Shell</a></li>
<li><a href="https://thehackernews.com/2026/10/urgent-php-warns-of-another-unpatched.html" target="_blank" rel="noopener">The Hacker News – CVE-2026-115560</a></li>
</ul>
<p>The post <a href="https://senetech.eu/php2shell-failles-critiques-php-que-faire/">PHP2Shell : deux failles critiques dans PHP, ce qu’il faut faire maintenant</a> appeared first on <a href="https://senetech.eu">SENETECH</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Sécuriser sa pipeline CI/CD : 7 bonnes pratiques DevSecOps</title>
		<link>https://senetech.eu/securiser-pipeline-ci-cd-bonnes-pratiques-devsecops/</link>
		
		<dc:creator><![CDATA[admin8462]]></dc:creator>
		<pubDate>Sat, 24 Oct 2026 19:59:36 +0000</pubDate>
				<category><![CDATA[DevOps]]></category>
		<guid isPermaLink="false">https://senetech.eu/?p=3361</guid>

					<description><![CDATA[<p>Secrets, analyse du code, images Docker, droits Kubernetes : 7 bonnes pratiques DevSecOps pour sécuriser votre pipeline CI/CD, avec des exemples GitLab CI.</p>
<p>The post <a href="https://senetech.eu/securiser-pipeline-ci-cd-bonnes-pratiques-devsecops/">Sécuriser sa pipeline CI/CD : 7 bonnes pratiques DevSecOps</a> appeared first on <a href="https://senetech.eu">SENETECH</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Une pipeline CI/CD automatise la construction, les tests et le déploiement de vos applications. C’est un gain de temps considérable… mais aussi une cible de choix : elle a accès à votre code, à vos secrets et à votre production. Voici 7 bonnes pratiques DevSecOps pour la sécuriser, avec des exemples concrets sur GitLab CI et Kubernetes.</p>
<h2>1. Ne jamais stocker de secrets dans le code</h2>
<p>Mots de passe, clés d’API, jetons d’accès : rien de tout cela ne doit apparaître dans le dépôt Git, même dans un fichier de configuration « temporaire ». Dans GitLab, utilisez les <strong>variables CI/CD</strong> (Paramètres → CI/CD → Variables) en les marquant <strong>masquées</strong> (elles n’apparaissent pas dans les journaux) et <strong>protégées</strong> (elles ne sont disponibles que sur les branches protégées).</p>
<h2>2. Analyser automatiquement le code (SAST)</h2>
<p>L’analyse statique repère les failles classiques (injections, mauvaises pratiques cryptographiques…) à chaque modification, avant même la mise en production. GitLab fournit un modèle prêt à l’emploi à inclure dans votre fichier <code>.gitlab-ci.yml</code>.</p>
<h2>3. Détecter les secrets oubliés</h2>
<p>Malgré toutes les précautions, un secret finit parfois dans un commit. La détection de secrets analyse chaque modification et alerte immédiatement. Si un secret a fuité, considérez-le comme compromis : révoquez-le et remplacez-le, le supprimer de l’historique ne suffit pas.</p>
<h2>4. Surveiller les dépendances</h2>
<p>Une grande partie du code d’une application provient de bibliothèques externes. Analysez-les régulièrement pour repérer les versions vulnérables, avec les outils de votre édition de GitLab ou des outils open source comme Trivy ou OWASP Dependency-Check.</p>
<h2>5. Scanner les images Docker avant de les déployer</h2>
<p>Une image peut embarquer des paquets système obsolètes. Faites échouer la pipeline si une vulnérabilité critique est détectée :</p>
<pre><code>stages:
  - test
  - build
  - scan
  - deploy

include:
  - template: Jobs/SAST.gitlab-ci.yml
  - template: Jobs/Secret-Detection.gitlab-ci.yml

scan_image:
  stage: scan
  image:
    name: aquasec/trivy:latest
    entrypoint: [""]
  variables:
    TRIVY_USERNAME: "$CI_REGISTRY_USER"
    TRIVY_PASSWORD: "$CI_REGISTRY_PASSWORD"
  script:
    - trivy image --exit-code 1 --severity HIGH,CRITICAL "$CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA"</code></pre>
<h2>6. Appliquer le principe du moindre privilège</h2>
<p>Le compte utilisé par la pipeline pour déployer sur Kubernetes ne doit avoir accès qu’à ce dont il a besoin : un <code>ServiceAccount</code> dédié, limité à son namespace grâce à un <code>Role</code> plutôt qu’un <code>ClusterRole</code>. Côté GitLab, réservez les runners de déploiement aux branches protégées.</p>
<h2>7. Contrôler et tracer chaque mise en production</h2>
<p>Utilisez les <strong>environnements protégés</strong> de GitLab pour exiger une validation avant le déploiement en production, et déployez des images identifiées de façon unique (tag lié au commit ou empreinte <code>sha256</code>) plutôt que <code>latest</code>. Vous savez ainsi exactement ce qui tourne en production, et vous pouvez revenir en arrière rapidement.</p>
<h2>En résumé</h2>
<p>La sécurité n’est pas une étape finale : en l’intégrant dans la pipeline, chaque modification est vérifiée automatiquement, sans ralentir vos équipes. Ces pratiques sont accessibles à toutes les structures, de la TPE à la collectivité.</p>
<p>Vous souhaitez sécuriser vos pipelines CI/CD ou mettre en place une démarche DevSecOps ? <a href="https://senetech.eu/contacts/">Contactez-nous</a> ou écrivez-nous à <a href="mailto:contact@senetech.eu">contact@senetech.eu</a>.</p>
<p>The post <a href="https://senetech.eu/securiser-pipeline-ci-cd-bonnes-pratiques-devsecops/">Sécuriser sa pipeline CI/CD : 7 bonnes pratiques DevSecOps</a> appeared first on <a href="https://senetech.eu">SENETECH</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Automatiser le Déploiement : Mettre en Place une Pipeline CI/CD avec GitLab CI et Kubernetes</title>
		<link>https://senetech.eu/automatiser-le-deploiement-mettre-en-place-une-pipeline-ci-cd-avec-gitlab-ci-et-kubernetes/</link>
		
		<dc:creator><![CDATA[admin8462]]></dc:creator>
		<pubDate>Fri, 28 Jun 2024 16:14:59 +0000</pubDate>
				<category><![CDATA[DevOps]]></category>
		<guid isPermaLink="false">https://senetech.eu/?p=3228</guid>

					<description><![CDATA[<p>Configurez pas à pas une pipeline CI/CD avec GitLab CI et un runner sur Kubernetes, pour construire, tester et déployer automatiquement.</p>
<p>The post <a href="https://senetech.eu/automatiser-le-deploiement-mettre-en-place-une-pipeline-ci-cd-avec-gitlab-ci-et-kubernetes/">Automatiser le Déploiement : Mettre en Place une Pipeline CI/CD avec GitLab CI et Kubernetes</a> appeared first on <a href="https://senetech.eu">SENETECH</a>.</p>
]]></description>
			<style id="elementor-post-3228">.elementor-3228 .elementor-element.elementor-element-431164e{--display:flex;}.elementor-widget-text-editor{font-family:var( --e-global-typography-text-font-family ), Sans-serif;font-weight:var( --e-global-typography-text-font-weight );color:var( --e-global-color-text );}.elementor-widget-text-editor.elementor-drop-cap-view-stacked .elementor-drop-cap{background-color:var( --e-global-color-primary );}.elementor-widget-text-editor.elementor-drop-cap-view-framed .elementor-drop-cap, .elementor-widget-text-editor.elementor-drop-cap-view-default .elementor-drop-cap{color:var( --e-global-color-primary );border-color:var( --e-global-color-primary );}.elementor-3228 .elementor-element.elementor-element-8df0e83{font-family:"Montserrat", Sans-serif;font-size:20px;font-weight:400;color:var( --e-global-color-astglobalcolor0 );}</style>							<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="3228" class="elementor elementor-3228">
				<div class="elementor-element elementor-element-431164e e-flex e-con-boxed wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-parent" data-id="431164e" data-element_type="container" data-e-type="container" data-settings="{&quot;_ha_eqh_enable&quot;:false}">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-8df0e83 elementor-widget elementor-widget-text-editor" data-id="8df0e83" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><strong>Introduction</strong></p><p>GitLab CI est un outil puissant pour l&#8217;intégration continue et le déploiement continu (CI/CD). Cet article explique comment configurer une pipeline CI/CD avec GitLab CI et Kubernetes.</p><p><strong>Pré-requis</strong></p><ul><li>Un cluster Kubernetes fonctionnel.</li><li>Un projet GitLab avec accès administrateur.</li></ul><p><strong>Étapes de Configuration</strong></p><ol><li><p><strong>Configurer un Runner GitLab</strong></p><ul><li><p><strong>Créer un namespace pour GitLab Runner</strong></p><div class="dark bg-gray-950 rounded-md border-[0.5px] border-token-border-medium"><h5 class="overflow-y-auto p-4" dir="ltr"><code class="!whitespace-pre hljs language-bash">kubectl create namespace gitlab-runner
</code></h5></div></li><li><p><strong>Déployer GitLab Runner via Helm</strong></p><div class="dark bg-gray-950 rounded-md border-[0.5px] border-token-border-medium"><h5 class="overflow-y-auto p-4" dir="ltr"><code class="!whitespace-pre hljs language-bash">helm repo add gitlab https://charts.gitlab.io
helm repo update
helm install --namespace gitlab-runner gitlab-runner gitlab/gitlab-runner
</code></h5></div></li><li><p><strong>Récupérer le token du Runner</strong></p></li></ul></li></ol><p><strong>Accéder à <code>Settings</code> -&gt; <code>CI/CD</code> -&gt; <code>Runners</code> dans votre projet GitLab</strong></p><p><strong>Copier le token de l&#8217;enregistrement du runner</strong></p><p><strong>Enregistrer le Runner avec GitLab</strong></p><div class="dark bg-gray-950 rounded-md border-[0.5px] border-token-border-medium"><h5 class="overflow-y-auto p-4" dir="ltr"><code class="!whitespace-pre hljs language-bash">kubectl <span class="hljs-built_in">exec</span> -it -n gitlab-runner $(kubectl get pods -n gitlab-runner -l app=gitlab-runner -o jsonpath=<span class="hljs-string">'{.items[0].metadata.name}'</span>) -- gitlab-runner register \
  --non-interactive \
  --url https://gitlab.com/ \
  --registration-token &lt;YOUR_REGISTRATION_TOKEN&gt; \
  --executor kubernetes \
  --kubernetes-namespace gitlab-runner \
  --description <span class="hljs-string">"GitLab Runner"</span> \
  --tag-list <span class="hljs-string">"k8s,docker"</span> \
  --run-untagged \
  --locked=<span class="hljs-literal">false</span>
</code></h5></div><ol><li><p><strong>Configurer le pipeline GitLab CI</strong></p><ul><li><strong>Créer un fichier <code>.gitlab-ci.yml</code> dans votre projet</strong><div class="dark bg-gray-950 rounded-md border-[0.5px] border-token-border-medium"><div class="flex items-center relative text-token-text-secondary bg-token-main-surface-secondary px-4 py-2 text-xs font-sans justify-between rounded-t-md">yaml<div class="flex items-center"> </div></div><div class="overflow-y-auto p-4" dir="ltr"><strong><code class="!whitespace-pre hljs language-yaml"><span class="hljs-attr">stages:</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">build</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">deploy</span>

<span class="hljs-attr">build:</span>
  <span class="hljs-attr">stage:</span> <span class="hljs-string">build</span>
  <span class="hljs-attr">script:</span>
    <span class="hljs-bullet">-</span> <span class="hljs-string">docker</span> <span class="hljs-string">build</span> <span class="hljs-string">-t</span> <span class="hljs-string">registry.gitlab.com/your-namespace/your-project:latest</span> <span class="hljs-string">.</span>
    <span class="hljs-bullet">-</span> <span class="hljs-string">docker</span> <span class="hljs-string">push</span> <span class="hljs-string">registry.gitlab.com/your-namespace/your-project:latest</span>

<span class="hljs-attr">deploy:</span>
  <span class="hljs-attr">stage:</span> <span class="hljs-string">deploy</span>
  <span class="hljs-attr">script:</span>
    <span class="hljs-bullet">-</span> <span class="hljs-string">kubectl</span> <span class="hljs-string">apply</span> <span class="hljs-string">-f</span> <span class="hljs-string">k8s/deployment.yaml</span>
</code></strong></div><div dir="ltr"> </div></div></li></ul></li><li><p><strong>Configurer l&#8217;accès à Docker Registry</strong></p><ul><li><p><strong>Ajouter des variables de CI/CD pour Docker registry dans GitLab</strong></p><ul><li><strong>Accéder à <code>Settings</code> -&gt; <code>CI/CD</code> -&gt; <code>Variables</code></strong></li><li><strong>Ajouter <code>DOCKER_REGISTRY_USER</code> et <code>DOCKER_REGISTRY_PASSWORD</code></strong></li></ul></li><li><h5><strong>Modifier le <code>.gitlab-ci.yml</code> pour utiliser ces variables</strong></h5><div class="dark bg-gray-950 rounded-md border-[0.5px] border-token-border-medium"><h5 class="flex items-center relative text-token-text-secondary bg-token-main-surface-secondary px-4 py-2 text-xs font-sans justify-between rounded-t-md">yaml</h5><div class="flex items-center"> </div><h5 class="overflow-y-auto p-4" dir="ltr"><code class="!whitespace-pre hljs language-yaml"><span class="hljs-attr">build:</span>
  <span class="hljs-attr">stage:</span> <span class="hljs-string">build</span>
  <span class="hljs-attr">script:</span>
    <span class="hljs-bullet">-</span> <span class="hljs-string">docker</span> <span class="hljs-string">login</span> <span class="hljs-string">-u</span> <span class="hljs-string">$DOCKER_REGISTRY_USER</span> <span class="hljs-string">-p</span> <span class="hljs-string">$DOCKER_REGISTRY_PASSWORD</span> <span class="hljs-string">registry.gitlab.com</span>
    <span class="hljs-bullet">-</span> <span class="hljs-string">docker</span> <span class="hljs-string">build</span> <span class="hljs-string">-t</span> <span class="hljs-string">registry.gitlab.com/your-namespace/your-project:latest</span> <span class="hljs-string">.</span>
    <span class="hljs-bullet">-</span> <span class="hljs-string">docker</span> <span class="hljs-string">push</span> <span class="hljs-string">registry.gitlab.com/your-namespace/your-project:latest</span>
</code></h5></div></li></ul></li></ol><p><strong>Conclusion</strong></p><p>En suivant ces étapes, vous aurez configuré une pipeline CI/CD avec GitLab CI et Kubernetes, automatisant ainsi le déploiement de vos applications conteneurisées.</p>								</div>
				</div>
					</div>
				</div>
				</div>
		<p>The post <a href="https://senetech.eu/automatiser-le-deploiement-mettre-en-place-une-pipeline-ci-cd-avec-gitlab-ci-et-kubernetes/">Automatiser le Déploiement : Mettre en Place une Pipeline CI/CD avec GitLab CI et Kubernetes</a> appeared first on <a href="https://senetech.eu">SENETECH</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Automatiser le Déploiement : Mettre en Place une Pipeline CI/CD avec Jenkins et Kubernetes</title>
		<link>https://senetech.eu/automatiser-le-deploiement-mettre-en-place-une-pipeline-ci-cd-avec-jenkins-et-kubernetes/</link>
		
		<dc:creator><![CDATA[admin8462]]></dc:creator>
		<pubDate>Fri, 28 Jun 2024 15:52:48 +0000</pubDate>
				<category><![CDATA[DevOps]]></category>
		<guid isPermaLink="false">https://senetech.eu/?p=3217</guid>

					<description><![CDATA[<p>Mettez en place une pipeline CI/CD avec Jenkins et Kubernetes pour construire, tester et déployer vos applications automatiquement.</p>
<p>The post <a href="https://senetech.eu/automatiser-le-deploiement-mettre-en-place-une-pipeline-ci-cd-avec-jenkins-et-kubernetes/">Automatiser le Déploiement : Mettre en Place une Pipeline CI/CD avec Jenkins et Kubernetes</a> appeared first on <a href="https://senetech.eu">SENETECH</a>.</p>
]]></description>
			<style id="elementor-post-3217">.elementor-3217 .elementor-element.elementor-element-4916276{--display:flex;}.elementor-widget-text-editor{font-family:var( --e-global-typography-text-font-family ), Sans-serif;font-weight:var( --e-global-typography-text-font-weight );color:var( --e-global-color-text );}.elementor-widget-text-editor.elementor-drop-cap-view-stacked .elementor-drop-cap{background-color:var( --e-global-color-primary );}.elementor-widget-text-editor.elementor-drop-cap-view-framed .elementor-drop-cap, .elementor-widget-text-editor.elementor-drop-cap-view-default .elementor-drop-cap{color:var( --e-global-color-primary );border-color:var( --e-global-color-primary );}.elementor-3217 .elementor-element.elementor-element-b681758{font-family:"Montserrat", Sans-serif;font-size:20px;font-weight:400;color:var( --e-global-color-astglobalcolor0 );}</style>							<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="3217" class="elementor elementor-3217">
				<div class="elementor-element elementor-element-4916276 e-flex e-con-boxed wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-parent" data-id="4916276" data-element_type="container" data-e-type="container" data-settings="{&quot;_ha_eqh_enable&quot;:false}">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-b681758 elementor-widget elementor-widget-text-editor" data-id="b681758" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<h3>Automatiser le Déploiement : Mettre en Place une Pipeline CI/CD avec Jenkins et Kubernetes</h3><p><strong>Introduction</strong></p><p>L&#8217;intégration continue et le déploiement continu (CI/CD) sont des pratiques essentielles pour des cycles de développement rapide et fiables. Cet article guide la mise en place d&#8217;une pipeline CI/CD utilisant Jenkins et Kubernetes.</p><p><strong>Pré-requis</strong></p><ul><li>Un cluster Kubernetes fonctionnel.</li><li>Jenkins installé et configuré (soit localement, soit sur Kubernetes).</li></ul><p><strong>Étapes de Configuration</strong></p><ol><li><p><strong>Installer Jenkins sur Kubernetes</strong></p><ul><li><p>Créer un namespace pour Jenkins</p><div class="dark bg-gray-950 rounded-md border-[0.5px] border-token-border-medium"><div class="flex items-center relative text-token-text-secondary bg-token-main-surface-secondary px-4 py-2 text-xs font-sans justify-between rounded-t-md"> </div><h5 class="overflow-y-auto p-4" dir="ltr"><code class="!whitespace-pre hljs language-bash">kubectl create namespace jenkins
</code></h5></div></li><li><p>Déployer Jenkins via Helm</p><div class="dark bg-gray-950 rounded-md border-[0.5px] border-token-border-medium"><h5 class="overflow-y-auto p-4" dir="ltr"><code class="!whitespace-pre hljs language-bash">helm repo add jenkinsci https://charts.jenkins.io
helm repo update
helm install jenkins jenkinsci/jenkins --namespace jenkins
</code></h5></div></li><li><p>Récupérer le mot de passe initial</p><div class="dark bg-gray-950 rounded-md border-[0.5px] border-token-border-medium"><h5 class="overflow-y-auto p-4" dir="ltr"><code class="!whitespace-pre hljs language-bash">kubectl <span class="hljs-built_in">exec</span> --namespace jenkins -it svc/jenkins -c jenkins -- /bin/cat /run/secrets/chart-admin-password &amp;&amp; <span class="hljs-built_in">echo</span>
</code></h5></div></li><li><p>Accéder à Jenkins</p><div class="dark bg-gray-950 rounded-md border-[0.5px] border-token-border-medium"><h5 class="overflow-y-auto p-4" dir="ltr"><strong><code class="!whitespace-pre hljs language-bash">kubectl --namespace jenkins port-forward svc/jenkins 8080:8080
</code></strong></h5></div></li></ul></li><li><p><strong>Configurer Jenkins pour Kubernetes</strong></p><ul><li><p>Installer les plugins nécessaires</p><ul><li>Kubernetes Plugin</li><li>Git Plugin</li><li>Pipeline Plugin</li></ul></li><li><p>Configurer Jenkins avec le plugin Kubernetes</p><ul><li>Accéder à <code>Manage Jenkins</code> -&gt; <code>Manage Plugins</code></li><li>Installer le plugin Kubernetes</li></ul></li><li><p>Configurer le cloud Kubernetes dans Jenkins</p><ul><li>Accéder à<code>Manage Jenkins</code> -&gt; <code>Manage Nodes and Clouds</code> -&gt; <code>Configure Clouds</code></li><li>Ajouter un nouveau cloud Kubernetes et configurer les détails du cluster</li></ul></li></ul></li><li><p><strong>Créer une Pipeline Jenkins</strong></p><ul><li>Créer un nouveau job de type Pipeline</li><li>Configurer le script Jenkinsfile<div class="dark bg-gray-950 rounded-md border-[0.5px] border-token-border-medium"><div class="flex items-center relative text-token-text-secondary bg-token-main-surface-secondary px-4 py-2 text-xs font-sans justify-between rounded-t-md">groovy<div class="flex items-center"> </div></div><h5 class="overflow-y-auto p-4" dir="ltr"><code class="!whitespace-pre hljs language-groovy">pipeline {
    agent {
        kubernetes {
            yaml """
            apiVersion: v1
            kind: Pod
            spec:
              containers:
              - name: jnlp
                image: jenkins/inbound-agent:latest
                args: ['\$(JENKINS_SECRET)', '\$(JENKINS_NAME)']
              - name: docker
                image: docker:latest
                command:
                - cat
                tty: true
            """
        }
    }
    stages {
        stage('Build') {
            steps {
                container('docker') {
                    sh 'docker build -t myapp:latest .'
                }
            }
        }
        stage('Deploy') {
            steps {
                container('kubectl') {
                    sh 'kubectl apply -f k8s/deployment.yaml'
                }
            }
        }
    }
}
</code></h5></div></li></ul></li></ol><p><strong>Conclusion</strong></p><p>En suivant ces étapes, vous aurez configuré une pipeline CI/CD avec Jenkins et Kubernetes, automatisant ainsi le déploiement de vos applications conteneurisées.</p>								</div>
				</div>
					</div>
				</div>
				</div>
		<p>The post <a href="https://senetech.eu/automatiser-le-deploiement-mettre-en-place-une-pipeline-ci-cd-avec-jenkins-et-kubernetes/">Automatiser le Déploiement : Mettre en Place une Pipeline CI/CD avec Jenkins et Kubernetes</a> appeared first on <a href="https://senetech.eu">SENETECH</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Guide Complet pour Installer et Configurer un Cluster Kubernetes avec kubeadm</title>
		<link>https://senetech.eu/guide-complet-pour-installer-et-configurer-un-cluster-kubernetes-avec-kubeadm/</link>
		
		<dc:creator><![CDATA[admin8462]]></dc:creator>
		<pubDate>Fri, 28 Jun 2024 11:12:13 +0000</pubDate>
				<category><![CDATA[DevOps]]></category>
		<guid isPermaLink="false">https://senetech.eu/?p=3206</guid>

					<description><![CDATA[<p>Guide complet pour installer et configurer un cluster Kubernetes avec kubeadm : prérequis, installation et configuration, étape par étape.</p>
<p>The post <a href="https://senetech.eu/guide-complet-pour-installer-et-configurer-un-cluster-kubernetes-avec-kubeadm/">Guide Complet pour Installer et Configurer un Cluster Kubernetes avec kubeadm</a> appeared first on <a href="https://senetech.eu">SENETECH</a>.</p>
]]></description>
			<style id="elementor-post-3206">.elementor-3206 .elementor-element.elementor-element-40d5e6b{--display:flex;}.elementor-widget-text-editor{font-family:var( --e-global-typography-text-font-family ), Sans-serif;font-weight:var( --e-global-typography-text-font-weight );color:var( --e-global-color-text );}.elementor-widget-text-editor.elementor-drop-cap-view-stacked .elementor-drop-cap{background-color:var( --e-global-color-primary );}.elementor-widget-text-editor.elementor-drop-cap-view-framed .elementor-drop-cap, .elementor-widget-text-editor.elementor-drop-cap-view-default .elementor-drop-cap{color:var( --e-global-color-primary );border-color:var( --e-global-color-primary );}.elementor-3206 .elementor-element.elementor-element-e2db914{font-family:"Montserrat", Sans-serif;font-size:20px;font-weight:400;color:var( --e-global-color-astglobalcolor0 );}</style>							<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="3206" class="elementor elementor-3206">
				<div class="elementor-element elementor-element-40d5e6b e-flex e-con-boxed wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-parent" data-id="40d5e6b" data-element_type="container" data-e-type="container" data-settings="{&quot;_ha_eqh_enable&quot;:false}">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-e2db914 elementor-widget elementor-widget-text-editor" data-id="e2db914" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><strong>Introduction</strong></p><p>Kubernetes est devenu la norme pour l&#8217;orchestration des conteneurs dans le monde du développement logiciel. Cet article fournit un guide détaillé pour installer et configurer un cluster Kubernetes en utilisant kubeadm, un outil officiel de Kubernetes.</p><p><strong>Pré-requis</strong></p><ul><li>Trois machines (ou VMs) avec une distribution Linux (Ubuntu 20.04 LTS recommandée).</li><li>Accès root sur toutes les machines.</li><li>Connexion réseau entre les machines.</li></ul><p><strong>Étapes de l&#8217;installation</strong></p><ol><li><h3><strong>Préparation des Machines</strong></h3><ul><li><p><strong>Mettre à jour les paquets</strong></p><div class="dark bg-gray-950 rounded-md border-[0.5px] border-token-border-medium"><div class="flex items-center relative text-token-text-secondary bg-token-main-surface-secondary px-4 py-2 text-xs font-sans justify-between rounded-t-md"> </div><h5 class="overflow-y-auto p-4" dir="ltr"><code class="!whitespace-pre hljs language-bash">sudo apt update &amp;&amp; sudo apt upgrade -y</code></h5><p> </p><div class="overflow-y-auto p-4" dir="ltr"><code class="!whitespace-pre hljs language-bash"></code></div></div></li><li><p><strong>Désactiver le swap</strong></p><div class="dark bg-gray-950 rounded-md border-[0.5px] border-token-border-medium"><div class="flex items-center relative text-token-text-secondary bg-token-main-surface-secondary px-4 py-2 text-xs font-sans justify-between rounded-t-md">bash</div><h5 class="overflow-y-auto p-4" dir="ltr"><code class="!whitespace-pre hljs language-bash">sudo swapoff -a<br />sudo sed -i <span class="hljs-string">'/ swap / s/^\(.*\)$/#\1/g'</span> /etc/fstab<br /></code></h5><p> </p></div></li><li><p><strong>Configurer le kernel</strong></p><div class="dark bg-gray-950 rounded-md border-[0.5px] border-token-border-medium"><div class="flex items-center relative text-token-text-secondary bg-token-main-surface-secondary px-4 py-2 text-xs font-sans justify-between rounded-t-md">bash</div><h5 class="overflow-y-auto p-4" dir="ltr"><code class="!whitespace-pre hljs language-bash"><span class="hljs-built_in">cat</span> &lt;&lt;<span class="hljs-string">EOF | sudo tee /etc/modules-load.d/k8s.conf<br />br_netfilter<br />EOF</span><br /></code></h5><p> </p></div><div class="dark bg-gray-950 rounded-md border-[0.5px] border-token-border-medium"><h5 class="flex items-center relative text-token-text-secondary bg-token-main-surface-secondary px-4 py-2 text-xs font-sans justify-between rounded-t-md">bash</h5><h5 class="overflow-y-auto p-4" dir="ltr"><code class="!whitespace-pre hljs language-bash"><span class="hljs-built_in">cat</span> &lt;&lt;<span class="hljs-string">EOF | sudo tee /etc/sysctl.d/k8s.conf<br />net.bridge.bridge-nf-call-ip6tables = 1<br />net.bridge.bridge-nf-call-iptables = 1<br />EOF</span><br />sudo sysctl --system<br /></code></h5><p> </p></div></li></ul></li><li><h3><strong>Installation de Docker</strong></h3><ul><li><p><strong>Installer les dépendances</strong></p><div class="dark bg-gray-950 rounded-md border-[0.5px] border-token-border-medium"><div class="flex items-center relative text-token-text-secondary bg-token-main-surface-secondary px-4 py-2 text-xs font-sans justify-between rounded-t-md">bash</div><h5 class="overflow-y-auto p-4" dir="ltr"><code class="!whitespace-pre hljs language-bash">sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common<br /></code></h5><p> </p></div></li><li><p><strong>Ajouter le GPG key et repository Docker</strong></p><div class="dark bg-gray-950 rounded-md border-[0.5px] border-token-border-medium"><div class="flex items-center relative text-token-text-secondary bg-token-main-surface-secondary px-4 py-2 text-xs font-sans justify-between rounded-t-md">bash</div><h5 class="overflow-y-auto p-4" dir="ltr"><code class="!whitespace-pre hljs language-bash">curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -<br />sudo add-apt-repository <span class="hljs-string">"deb [arch=amd64] https://download.docker.com/linux/ubuntu <span class="hljs-subst">$(lsb_release -cs)</span> stable"</span><br /></code></h5><p> </p></div></li><li><p><strong>Installer Docker</strong></p><div class="dark bg-gray-950 rounded-md border-[0.5px] border-token-border-medium"><div class="flex items-center relative text-token-text-secondary bg-token-main-surface-secondary px-4 py-2 text-xs font-sans justify-between rounded-t-md">bash</div><h5 class="overflow-y-auto p-4" dir="ltr"><code class="!whitespace-pre hljs language-bash">sudo apt update<br />sudo apt install -y docker-ce docker-ce-cli containerd.io<br /></code></h5><p> </p></div></li><li><p><strong>Configurer Docker pour Kubernetes</strong></p><div class="dark bg-gray-950 rounded-md border-[0.5px] border-token-border-medium"><div class="flex items-center relative text-token-text-secondary bg-token-main-surface-secondary px-4 py-2 text-xs font-sans justify-between rounded-t-md">bash</div><h5 class="overflow-y-auto p-4" dir="ltr"><code class="!whitespace-pre hljs language-bash"><span class="hljs-built_in">cat</span> &lt;&lt;<span class="hljs-string">EOF | sudo tee /etc/docker/daemon.json<br />{<br />  "exec-opts": ["native.cgroupdriver=systemd"],<br />  "log-driver": "json-file",<br />  "log-opts": {<br />    "max-size": "100m"<br />  },<br />  "storage-driver": "overlay2"<br />}<br />EOF</span><br />sudo systemctl <span class="hljs-built_in">enable</span> docker<br />sudo systemctl daemon-reload<br />sudo systemctl restart docker<br /></code></h5><p> </p></div></li></ul></li><li><h3><strong>Installation de kubeadm, kubelet et kubectl</strong></h3><ul><li><p><strong>Ajouter le GPG key et repository Kubernetes</strong></p><div class="dark bg-gray-950 rounded-md border-[0.5px] border-token-border-medium"><h5 class="overflow-y-auto p-4" dir="ltr"><code class="!whitespace-pre hljs language-bash">curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -<br />sudo apt-add-repository <span class="hljs-string">"deb http://apt.kubernetes.io/ kubernetes-xenial main"</span><br /></code></h5><p> </p></div></li><li><p><strong>Installer les paquets Kubernetes</strong></p><div class="dark bg-gray-950 rounded-md border-[0.5px] border-token-border-medium"><h5 class="overflow-y-auto p-4" dir="ltr"><code class="!whitespace-pre hljs language-bash">sudo apt update<br />sudo apt install -y kubelet kubeadm kubectl<br />sudo apt-mark hold kubelet kubeadm kubectl</code></h5><h5 class="overflow-y-auto p-4" dir="ltr"> </h5></div></li></ul></li><li><h3><strong>Initialisation du Cluster</strong></h3><ul><li><p><strong>Sur le master node</strong></p><div class="dark bg-gray-950 rounded-md border-[0.5px] border-token-border-medium"><h5 class="overflow-y-auto p-4" dir="ltr"><code class="!whitespace-pre hljs language-bash">sudo kubeadm init --pod-network-cidr=10.244.0.0/16</code></h5><h5 class="overflow-y-auto p-4" dir="ltr"> </h5></div></li><li><p><strong>Configurer kubectl pour l&#8217;utilisateur non-root</strong></p><div class="dark bg-gray-950 rounded-md border-[0.5px] border-token-border-medium"><div class="flex items-center relative text-token-text-secondary bg-token-main-surface-secondary px-4 py-2 text-xs font-sans justify-between rounded-t-md"><div class="flex items-center"> </div></div><h5 class="overflow-y-auto p-4" dir="ltr"><code class="!whitespace-pre hljs language-bash"><span class="hljs-built_in">mkdir</span> -p <span class="hljs-variable">$HOME</span>/.kube<br />sudo <span class="hljs-built_in">cp</span> -i /etc/kubernetes/admin.conf <span class="hljs-variable">$HOME</span>/.kube/config<br />sudo <span class="hljs-built_in">chown</span> $(<span class="hljs-built_in">id</span> -u):$(<span class="hljs-built_in">id</span> -g) <span class="hljs-variable">$HOME</span>/.kube/config</code></h5><h5 class="overflow-y-auto p-4" dir="ltr"> </h5></div></li><li><p><strong>Déployer un plugin de réseau</strong></p><div class="dark bg-gray-950 rounded-md border-[0.5px] border-token-border-medium"><div class="flex items-center relative text-token-text-secondary bg-token-main-surface-secondary px-4 py-2 text-xs font-sans justify-between rounded-t-md"><div class="flex items-center"> </div></div><h5 class="overflow-y-auto p-4" dir="ltr"><code class="!whitespace-pre hljs language-bash">kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml</code></h5><h5 class="overflow-y-auto p-4" dir="ltr"> </h5></div></li></ul></li><li><h3><strong>Ajout de nœuds au Cluster</strong></h3><ul><li><strong>Sur chaque nœud worker</strong><br /><div class="dark bg-gray-950 rounded-md border-[0.5px] border-token-border-medium"><div class="flex items-center relative text-token-text-secondary bg-token-main-surface-secondary px-4 py-2 text-xs font-sans justify-between rounded-t-md"><p> </p><div class="flex items-center"> </div></div><h5 class="overflow-y-auto p-4" dir="ltr"><code class="!whitespace-pre hljs language-bash">sudo kubeadm <span class="hljs-built_in">join</span> &lt;master-node-ip&gt;:&lt;master-node-port&gt; --token &lt;token&gt; --discovery-token-ca-cert-hash sha256:&lt;<span class="hljs-built_in">hash</span>&gt;</code></h5></div></li></ul></li></ol><p><strong>Conclusion</strong></p><p>Vous avez maintenant un cluster Kubernetes fonctionnel installé et configuré avec kubeadm. Vous pouvez déployer vos applications conteneurisées et profiter des avantages de Kubernetes pour l&#8217;orchestration.</p>								</div>
				</div>
					</div>
				</div>
				</div>
		<p>The post <a href="https://senetech.eu/guide-complet-pour-installer-et-configurer-un-cluster-kubernetes-avec-kubeadm/">Guide Complet pour Installer et Configurer un Cluster Kubernetes avec kubeadm</a> appeared first on <a href="https://senetech.eu">SENETECH</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
