<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Déploiement on Zwindler's Reflection</title><link>https://blog.zwindler.fr/tags/d%C3%A9ploiement/</link><description>Recent content in Déploiement on Zwindler's Reflection</description><generator>Hugo -- gohugo.io</generator><language>fr</language><copyright>Licensed under CC BY-SA 4.0</copyright><lastBuildDate>Mon, 19 Apr 2021 07:59:14 +0000</lastBuildDate><atom:link href="https://blog.zwindler.fr/tags/d%C3%A9ploiement/index.xml" rel="self" type="application/rss+xml"/><item><title>Pourquoi Helm 2 doit disparaître</title><link>https://blog.zwindler.fr/2021/04/19/pourquoi-helm-2-doit-disparaitre/</link><pubDate>Mon, 19 Apr 2021 07:59:14 +0000</pubDate><guid>https://blog.zwindler.fr/2021/04/19/pourquoi-helm-2-doit-disparaitre/</guid><description>&lt;img src="https://blog.zwindler.fr/2021/04/Rage.webp" alt="Featured image of post Pourquoi Helm 2 doit disparaître" /&gt;&lt;h2 id="deployer-sur-kubernetes-avec-helm-cest-vraiment-se-faire-du-mal"&gt;Deployer sur Kubernetes avec Helm, c’est vraiment se faire du mal
&lt;/h2&gt;&lt;p&gt;Je ne sais plus qui parmi vous écrivait il y a peu « Avec Kubernetes, c’est un peu une love/hate relationship ». J’adore Kubernetes, particulièrement dans les contextes où il résout des « million-dollar problems ». Mais alors&amp;hellip; QU’EST CE QUE JE DETESTE HELM.&lt;/p&gt;
&lt;p&gt;Je rage / shitpost régulièrement sur Helm, mais malheureusement il n’y a pas tant d’alternatives pour déployer facilement dans Kubernetes (oui je sais qu’il y en a, ce n’est pas le but du post).&lt;/p&gt;
&lt;h2 id="mais-attend-tu-parles-de-helm-2-dans-ton-titre-"&gt;Mais attend, tu parles de Helm 2 dans ton titre ?
&lt;/h2&gt;&lt;p&gt;Ça fait des années que j’ai ce brouillon en attente sur le blog (encore un, me direz-vous). Je commençais à me dire que ce n’avait plus vraiment d’intérêt de le poster maintenant que &lt;a class="link" href="https://helm.sh/blog/helm-v2-deprecation-timeline/" target="_blank" rel="noopener"
&gt;Helm 2 est officiellement déprécié et remplacé par Helm 3 depuis quasiment 1 an.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Mais j’ai lu un &lt;a class="link" href="https://serveur410.com/ton-coin-de-web-tattends/" target="_blank" rel="noopener"
&gt;chouette article de serveur410&lt;/a&gt; il y a quelques jours qui m’a décomplexé de poster des articles anachroniques (et je vous invite à aller lire cet article, que vous ayez un blog ou non).&lt;/p&gt;
&lt;p&gt;Donc oui, je vais parler d’une techno dépréciée depuis plus d’un an et dont le remplaçant qui est censé magiquement régler tous les problèmes est apparu en 2019.&lt;/p&gt;
&lt;p&gt;Pour autant, ce n’est pas parce que cet article va parler de Helm 2, de ses bugs que j’ai rencontrés et de comment on se sort de chaque situation pourrie. Le plus simple étant de passer à Helm 3, même sil est pété lui aussi (on en reparlera sûrement).&lt;/p&gt;
&lt;h2 id="déployer-avec-helm2-quel-enfer-"&gt;Déployer avec Helm2, quel enfer !
&lt;/h2&gt;&lt;p&gt;Mais revenons à Helm 2. En 2018/2019, je déploie en production des applications dans un Kubernetes managé qu’on manage nous-même (trop long à expliquer ;-p).&lt;/p&gt;
&lt;p&gt;On avait la « flemme » de migrer de Helm 2 à Helm 3 et franchement on a vraiment eu tort. Je vais vous faire une petite histoire vraie de ce qui s’est passé lorsque j’ai essayé de redéployer un prometheus.&lt;/p&gt;
&lt;h2 id="la-genèse"&gt;La genèse
&lt;/h2&gt;&lt;p&gt;Pour une raison qui m’échappe (car le brouillon est beaucoup trop vieux), j’ai commencé par supprimer la release helm plutôt que d’&lt;em&gt;upgrade&lt;/em&gt; mon déploiement (la release devait être dans un état foireux, et &lt;a class="link" href="https://helm.sh/docs/faq/#improved-upgrade-strategy-3-way-strategic-merge-patches" target="_blank" rel="noopener"
&gt;comme Helm 2 ne supporte pas le 3-way merge&amp;hellip;&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Je supprime donc ma release.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;zwindler$ helm delete prometheus
release &amp;#34;prometheus&amp;#34; deleted
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Je ne peux donc plus « upgrade » ma release puisqu’elle n’existe plus.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;zwindler$ helm upgrade prometheus stable/prometheus
Error: UPGRADE FAILED: &amp;#34;prometheus&amp;#34; has no deployed releases
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="so-far-so-good"&gt;So far, so good
&lt;/h2&gt;&lt;p&gt;J’essaye donc de la réinstaller&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;zwindler$ helm install prometheus stable/prometheus
Error: This command needs 1 argument: chart name
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Ah ! Et oui, la commande est différente selon qu’on &lt;em&gt;upgrade&lt;/em&gt; ou qu’on &lt;em&gt;install&lt;/em&gt; une release. Pratique.&lt;/p&gt;
&lt;p&gt;Vous allez me dire « bah, pourquoi tu ne fais pas un &lt;em&gt;upgrade &amp;ndash;install&lt;/em&gt;, comme ça la commande est la même que tu upgrade ou que tu installes ?&lt;/p&gt;
&lt;p&gt;Tout simplement car cette commande ne marchait PLUS pendant longtemps (genre 2 ans), comme le témoigne cette issue sur Github et ce tweet rageur d’un certain zwindler&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2021/tweet_helm.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;Enfin bon&amp;hellip;&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;zwindler$ helm install --name prometheus stable/prometheus
Error: a release named prometheus already exists.
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Là, par contre, on est d’accord que Helm se fiche vraiment de moi ?&lt;/p&gt;
&lt;p&gt;Donc, dans ce genre de souci, vous pouvez sortir l’artillerie lourde avec le « &amp;ndash;purge », qui fini par devenir la norme (en gros, je le mettais à chaque fois).&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;zwindler$ helm delete prometheus --purge
release &amp;#34;prometheus&amp;#34; deleted
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Et là on peut réinstaller sa release&amp;hellip;&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;zwindler$ helm install --name prometheus stable/prometheus -f prom-values-with-thanos.yaml
NAME: prometheus
LAST DEPLOYED: Thu Oct 10 15:12:39 2019
NAMESPACE: monitoring
STATUS: DEPLOYED
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Bon&amp;hellip; et la prochaine fois que vous voudrez mettre à jour les valeurs de votre déploiement, n’oubliez pas de refaire des « upgrade » et pas « install », sinon il va vous conseiller de la delete ;)&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;zwindler$ helm install --name prometheus stable/prometheus -f prom-values-with-thanos.yaml
Error: a release named prometheus already exists.
Run: helm ls --all prometheus; to check the status of the release
Or run: helm del --purge prometheus; to delete it
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2021/04/Rage.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;h2 id="et-cest-pas-fini-"&gt;Et c’est pas fini !
&lt;/h2&gt;&lt;p&gt;Dans les bugs rigolos de Helm 2, on a aussi le flag DEBUG, souvent utilisé dans les Charts pour activer le mode debug du logiciel que vous essayez de déployer, qui est AUSSI utilisé par Helm pour passer en debug et qui vous crache du caca dans votre CI.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Client: &amp;amp;amp;version.Version{SemVer:&amp;#34;v2.4.1&amp;#34;, GitCommit:&amp;#34;46d9ea82e2c925186e1fc620a8320ce1314cbb02&amp;#34;, GitTreeState:&amp;#34;clean&amp;#34;}
2017/05/06 16:11:47 (0xc42088e210) (0xc4204be000) Create stream
2017/05/06 16:11:47 (0xc42088e210) (0xc4204be000) Stream added, broadcasting: 1
2017/05/06 16:11:47 (0xc42088e210) Reply frame received for 1
2017/05/06 16:11:47 (0xc4204be000) (1) Writing data frame
2017/05/06 16:11:47 (0xc42088e210) (0xc4204be140) Create stream
2017/05/06 16:11:47 (0xc42088e210) (0xc4204be140) Stream added, broadcasting: 3
...
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/helm/helm/issues/2401" target="_blank" rel="noopener"
&gt;github.com/helm/helm/issues/2401&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;Ah oui tient, c’est marrant ça, on devrait peut être changer DEBUG en HELM_DEBUG ?No shit, sherlock&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Ou bien les ConfigMap trop grandes (lol) qui font planter tiller&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;[storage] 2020/01/14 15:00:16 getting release history for &amp;#34;airflow&amp;#34;
[storage/driver] 2020/01/14 15:00:16 create: failed to create: ConfigMap &amp;#34;airflow.v1&amp;#34; is invalid: []: Too long: must have at most 1048576 characters
[tiller] 2020/01/14 15:00:16 warning: Failed to record release airflow: ConfigMap &amp;#34;airflow.v1&amp;#34; is invalid: []: Too long: must have at most 1048576 characters
[kube] 2020/01/14 15:00:16 building resources from manifest
[kube] 2020/01/14 15:00:16 creating 21 resource(s)
[kube] 2020/01/14 15:00:18 beginning wait for 21 resources with timeout of 5m0s
[kube] 2020/01/14 15:00:20 Pod is not ready: airflow/airflow-worker-0
[kube] 2020/01/14 15:00:38 Pod is not ready: airflow/airflow-worker-0
[kube] 2020/01/14 15:00:40 Pod is not ready: airflow/airflow-worker-1
[kube] 2020/01/14 15:00:42 Pod is not ready: airflow/airflow-worker-1
[kube] 2020/01/14 15:00:44 Pod is not ready: airflow/airflow-worker-1
[kube] 2020/01/14 15:00:46 Pod is not ready: airflow/airflow-worker-1
[tiller] 2020/01/14 15:01:40 executing 0 post-install hooks for airflow
[tiller] 2020/01/14 15:01:40 hooks complete for post-install airflow
[storage] 2020/01/14 15:01:40 updating release &amp;#34;airflow.v1&amp;#34;
[storage/driver] 2020/01/14 15:01:40 update: failed to update: configmaps &amp;#34;airflow.v1&amp;#34; not found
[tiller] 2020/01/14 15:01:40 warning: Failed to update release airflow: configmaps &amp;#34;airflow.v1&amp;#34; not found
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/helm/helm/issues/1413" target="_blank" rel="noopener"
&gt;github.com/helm/helm/issues/1413&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ou enfin, les timeouts de tiller quand vous avez trop déployé (lol) et que du coup les commandes « helm list » timeout&amp;hellip; ce qui nous avait obligé à installer un tiller par namespace et modifier notre CI pour gérer tout ce bazar.&lt;/p&gt;
&lt;p&gt;Non, vraiment, Helm 2 est vraiment un chouette logiciel !&lt;/p&gt;</description></item><item><title>Kubernetes avec RancherOS et RKE – partie 1</title><link>https://blog.zwindler.fr/2020/10/26/kubernetes-avec-rancheros-et-rke-partie-1/</link><pubDate>Mon, 26 Oct 2020 07:45:00 +0000</pubDate><guid>https://blog.zwindler.fr/2020/10/26/kubernetes-avec-rancheros-et-rke-partie-1/</guid><description>&lt;img src="https://blog.zwindler.fr/2020/10/rancheros_explained.webp" alt="Featured image of post Kubernetes avec RancherOS et RKE – partie 1" /&gt;&lt;h2 id="rancheros-pour-commencer"&gt;RancherOS pour commencer
&lt;/h2&gt;&lt;p&gt;Pendant l’été, j’ai &lt;em&gt;encore&lt;/em&gt; changé d’infra, avec un passage à un cluster Proxmox VE à 3 nœuds. Je reviendrais la dessus, mais la finalité c’est que j’ai eu (encore) l’envie de m’installer un petit cluster Kubernetes dans mes hyperviseurs.&lt;/p&gt;
&lt;p&gt;Ceux qui me suivent depuis un moment savent que j’en ai déjà déployé des tonnes depuis le temps (&lt;a class="link" href="https://blog.zwindler.fr/recherche/?keyword=kubernetes" &gt;k3s qui vient également de chez Rancher, mais aussi kubespray, kubeadm, aks, OVH, the hard way de kelsey hightower, &amp;hellip;&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Du coup, plutôt que de gagner du temps et refaire quelque chose que je maîtrise déjà, je suis parti dans l’idée de tester quelque chose d’encore nouveau, deux produits de Rancher dont j’ai entendu parler : RancherOS + RKE !&lt;/p&gt;
&lt;p&gt;L’idée dans cette première partie est de découvrir RancherOS, une des nombreuses solutions pour vos workload containerisés proposées par Rancher.&lt;/p&gt;
&lt;h2 id="mais-cest-quoi-rancheros-"&gt;Mais c’est quoi RancherOS ?
&lt;/h2&gt;&lt;blockquote&gt;
&lt;p&gt;RancherOS A lightweight, secure Linux distribution, built from containers to run containers well.
RancherOS est donc un OS minimaliste contenant juste ce qu’il faut pour faire du Docker, configuré à l’aide de cloud-init et dans lequel la plupart des opérations de maintenances sont simplifiées.
Quand je lis ça, je ne peux pas m&amp;rsquo;empêcher de repenser à CoreOS, qui faisait (fait) les mêmes promesses.
N’ayant qu’installé et utilisé pendant peu de temps CoreOS, je ne serai pas capable de faire une comparaison des deux produits entre eux, mais la finalité est vraiment la même.
Un point intéressant (je trouve) dans RancherOS est le fait que tous les services &amp;ldquo;techniques&amp;rdquo; nécessaires pour faire fonctionner correctement vos applications containerisés sont également des containers.
RancherOS is the smallest, easiest way to run Docker in production. Every process in RancherOS is a container managed by Docker. This includes system services such as udev and syslog.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2020/10/rancheros_explained.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;L’idée ici, c’est que tous ces services systèmes tournent dans un démon Docker séparé (pour plus de sécurité et éviter la suppression accidentelle).&lt;/p&gt;
&lt;h2 id="comment-le-déployer-"&gt;Comment le déployer ?
&lt;/h2&gt;&lt;blockquote&gt;
&lt;p&gt;Ça dépend. Et évidemment, ça dépend, ça dépasse.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Rancher a fait le choix (malin) de mettre le paquet pour faciliter le déploiement de leur RancherOS sur le plus de plateformes possibles.&lt;/p&gt;
&lt;p&gt;Ainsi, vous retrouverez des processus de déploiement facilités pour la plupart des clouds providers public, mais aussi des images pour VMware, une image pour Rasberry Pi, Virtual Box ou Docker Machine. Il y a même de quoi booter en PXE pour ceux qui ont encore l’envie de faire ce genre de choses.&lt;/p&gt;
&lt;p&gt;Dans mon cas, la seule solution à ma disposition pour KVM c’est d’&lt;a class="link" href="https://rancher.com/docs/os/v1.x/en/installation/workstation/boot-from-iso/" target="_blank" rel="noopener"
&gt;utiliser l’ISO&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="première-bonne-nouvelle-et-première-déconvenue"&gt;Première bonne nouvelle et première déconvenue
&lt;/h2&gt;&lt;p&gt;LA première bonne nouvelle, c’est qu’il existe un ISO tuné pour Proxmox VE, et ça c’est très cool.&lt;/p&gt;
&lt;p&gt;Donc je DL l’ISO, créé une bête machine virtuelle sur mon cluster, dans lequel l’ISO est monté et roule ma poule ?&lt;/p&gt;
&lt;p&gt;Ouais&amp;hellip; presque !&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;You must boot with enough memory which you can refer to &lt;a class="link" href="https://rancher.com/docs/os/v1.x/en/overview/#hardware-requirements" target="_blank" rel="noopener"
&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Un point agaçant avec RancherOS est le &lt;em&gt;minimum requirement&lt;/em&gt; en termes de mémoire. 1.25 Go pour un OS Linux soi-disant minimaliste (passé à 1 Go depuis la 1.5), la pilule a du mal à passer. Ok, je pinaille peut-être un peu, mais 1 Go c’est énorme quand on a prévu de lancer juste quelques petits containers comme des petits nginx ou des petits bouts de code python.&lt;/p&gt;
&lt;p&gt;Il faut dire que Rancher nous a mal habitué avec k3s, leur Kubernetes modifié qui tourne avec quasiment pas de RAM au point de permettre de Kubernetes sur des RPi 1 ou en &lt;em&gt;edge computing&lt;/em&gt;. Et là, avec 2 fois plus de RAM en &lt;em&gt;requirement&lt;/em&gt;, j’ai que le démon Docker, même pas le kube qui va avec&amp;hellip;&lt;/p&gt;
&lt;p&gt;Du coup, le &amp;ldquo;RancherOS is the smallest, easiest way to run Docker in production&amp;rdquo;, bof&amp;hellip;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://blog.zwindler.fr/2019/03/21/deployer-en-5-minutes-un-cluster-kubernetes-sur-arm-avec-k3s-et-ansible/" &gt;Déployer en 5 minutes un cluster Kubernetes sur ARM avec k3s et Ansible&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Rancher essaye de se raccrocher aux branches en vous linkant une &lt;a class="link" href="https://rancher.com/docs/os/v1.x/en/installation/custom-builds/custom-rancheros-iso/#reduce-memory-requirements" target="_blank" rel="noopener"
&gt;doc permettant de construire soi-même une image custom nécessitant moins de RAM&lt;/a&gt;, mais bon&amp;hellip; Le mal est fait, ils m’ont pas motivé à tester&amp;hellip;&lt;/p&gt;
&lt;h2 id="déployer-rancheros-sur-proxmox-ve"&gt;Déployer RancherOS sur Proxmox VE
&lt;/h2&gt;&lt;p&gt;Ok, assez discuté, maintenant on peut rentrer dans le vif du sujet. Sur notre hyperviseur préféré, on récupère l’ISO.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;cd /var/lib/vz/template/iso
wget https://releases.rancher.com/os/latest/proxmoxve/rancheros.iso
--2020-08-10 15:00:26-- https://releases.rancher.com/os/latest/proxmoxve/rancheros.iso
Resolving releases.rancher.com (releases.rancher.com)... 104.26.12.240, 172.67.69.133, 104.26.13.240, ...
Connecting to releases.rancher.com (releases.rancher.com)|104.26.12.240|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 160432128 (153M) [application/x-iso9660-image]
Saving to: ‘rancheros.iso’
rancheros.iso 100%[===================&amp;gt;] 153.00M 42.3MB/s in 3.7s
2020-08-10 15:00:36 (40.9 MB/s) - ‘rancheros.iso’ saved [160432128/160432128]
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;La procédure d’installation officielle est &lt;a class="link" href="https://rancher.com/docs/os/v1.x/en/installation/server/install-to-disk/" target="_blank" rel="noopener"
&gt;disponible ici&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Grosso modo, on boot la VM, qui va configurer le serveur au minimum et permettre de se connecter avec l’utilisateur rancher&lt;code&gt; sans mot de passe. L’idée est d’utiliser cet utilisateur pour finaliser l’installation avec ros install&lt;/code&gt; une fois la VM configurée.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The ros install` command orchestrates the installation from the rancher/os container. You will need to have already created a cloud-config file and found the target disk.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;STOOOOOP&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Si vous partez bille en tête comme moi et faites un ros install` sans lire la phrase en entier, vous vous retrouverez avec une VM sur laquelle vous ne pourrez pas vous loguer (voire sans réseau si vous n’avez pas de DHCP). C’est con.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The easiest way to log in is to pass a cloud-config.yml file containing your public SSH keys.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="cloud-config"&gt;Cloud config
&lt;/h2&gt;&lt;p&gt;Ok, on va éviter de tous faire la même erreur. Voici maintenant le fameux prérequis, la documentation officielle qui parle de &lt;a class="link" href="https://rancher.com/docs/os/v1.x/en/configuration/#cloud-config" target="_blank" rel="noopener"
&gt;configuration/#cloud-config&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Si vous avez un doute sur certains paramètres, vous pouvez toujours utiliser la commande ros config` qui permet de récupérer les valeurs par défaut puis les setter.&lt;/p&gt;
&lt;p&gt;On finalisera le tout en fusionnant la config actuelle avec un fichier YAML, ou alors on exportera la conf actuelle dans un autre fichier YAML.&lt;/p&gt;
&lt;p&gt;Dans le cas d’un PoC, la plupart des valeurs qui vont nous intéresser sont simplement ce qui permet de setter l’IP et de configurer notre clé SSH pour pouvoir se connecter.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;sudo ros config get rancher.network
dhcp_timeout: 0
dns:
nameservers: []
search: []
http_proxy: &amp;#34;&amp;#34;
https_proxy: &amp;#34;&amp;#34;
interfaces: {}
modem_networks: {}
no_proxy: &amp;#34;&amp;#34;
post_cmds: []
pre_cmds: []
wifi_networks: {}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Donc là, de base, bah ya rien.&lt;/p&gt;
&lt;p&gt;Pourtant, si vous allez voir le fichier /var/lib/rancher/conf/cloud-config.yml, vous remarquerez qu’il y a pleeeeein de choses, plus ou moins utiles.&lt;/p&gt;
&lt;p&gt;La page de doc qui nous intéressera donc dans ce cas est &lt;a class="link" href="https://rancher.com/docs/os/v1.x/en/networking/" target="_blank" rel="noopener"
&gt;networking&lt;/a&gt;. Voici un exemple de commandes pour configurer une IP fixe (à remplacer par des valeurs qui ont du sens dans votre réseau, of course).&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;sudo ros config set rancher.network.interfaces.eth0.address 192.168.1.10/24
sudo ros config set rancher.network.interfaces.eth0.gateway 192.168.1.1
sudo ros config set rancher.network.interfaces.eth0.mtu 1500
sudo ros config set rancher.network.interfaces.eth0.dhcp false
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;A partir de ce moment là, vous avez accès au réseau depuis votre machine RancherOS, mais les modifications ne seront pas permanentes. On va donc exporter tout ça.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;sudo ros config export
rancher:
environment:
EXTRA_CMDLINE: /init
network:
interfaces:
eth0:
address: 192.168.1.10/24
dhcp: false
gateway: 192.168.1.10
mtu: 1500
ssh_authorized_keys: []
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Bon, et là vous voyez qu’il nous manque toujours la clé SSH.&lt;/p&gt;
&lt;h2 id="bonus-clavier-qwerty"&gt;Bonus clavier qwerty
&lt;/h2&gt;&lt;p&gt;Vous connaissez la différence entre un admin systèmes français débutant et un admin système français senior ?&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;If you call yourself a sysadmin and don’t know by heart the qwerty layout on an azerty keyboard, I just assume you are a junior.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;(Pour ceux qui n’ont pas la blague, allez voir ce tweet de _oshell qui a bien backfired (lien mort) dans sa face)&lt;/p&gt;
&lt;p&gt;Le senior, a force de bouffer des consoles à la con qui gèrent mal les différents layouts de claviers (parce que &amp;ldquo;hé, on s’en fout des gens qui ont pas de qwerty, on vient de la Silicon valley&amp;rdquo;), il connaît le qwerty par cœur.&lt;/p&gt;
&lt;p&gt;Et ben là encore, ça n’a pas loupé. La console NoVNC de mon PVE, qui en plus n’avait le partage de presse-papier qui ne marchait pas.&lt;/p&gt;
&lt;p&gt;Je veux bien être à l’aise en &amp;ldquo;blind qwerty sur azerty&amp;rdquo;, mais faut pas déconner, je suis pas senior au point d’être capable de copier une clé publique dans un YAML #trollface.&lt;/p&gt;
&lt;p&gt;Donc pour ceux qui ne connaissent pas l’astuce, il est possible d’affecter temporairement un terminal série à votre VM de la façon suivante (voir &lt;a class="link" href="https://pve.proxmox.com/wiki/Serial_Terminal" target="_blank" rel="noopener"
&gt;doc Proxmox VE&lt;/a&gt;)&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;# qm set 100 -serial0 socket
update VM 100: -serial0 socket
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;A partir de là, vous devriez pouvoir accéder à un nouveau type de console dans Proxmox, qui devrait à la fois résoudre le problème de clavier qwerty ET le problème de presse-papier.&lt;/p&gt;
&lt;h2 id="cloud-config-suite"&gt;Cloud-config, suite
&lt;/h2&gt;&lt;p&gt;On récupère ce qu’on vient d’exporter et on ajoute notre clé comme nous le demande Rancher dans sa doc. Et avant de lancer l’install, on vérifie que notre cloud-config est valide&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;sudo ros config validate -i cloud-config.yml
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Si la commande ne renvoie rien, c’est que c’est OK (pas super explicite mais bon why not). On passe donc à l’install :&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;sudo ros install -c cloud-config.yml -d /dev/sda
INFO[0000] No install type specified...defaulting to generic
Installing from rancher/os:v0.5.0
Continue [y/N]:
[...]
Continue with reboot [y/N]: y
INFO[0013] Rebooting
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;A partir de là, on peut (et on doit) se connecter en SSH sur la machine RancherOS (l’accès console n’est plus possible)&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;ssh -J proxmoxve rancher@192.168.1.10
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Et si tout s’est bien passé, vous devriez pouvoir vous connecter !&lt;/p&gt;
&lt;h2 id="et-maintenant-que-vais-je-fai-reuh-"&gt;Et maintenant, que vais-je fai-reuh ?
&lt;/h2&gt;&lt;p&gt;Ben déjà on peut regarder ce que RancherOS a activé comme &amp;ldquo;services&amp;rdquo; sur notre install Proxmox VE.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;sudo ros service list
disabled amazon-ecs-agent
disabled container-cron
disabled open-iscsi
disabled zfs
disabled kernel-extras
disabled kernel-headers
disabled kernel-headers-system-docker
disabled open-vm-tools
disabled hyperv-vm-tools
enabled qemu-guest-agent
disabled rancher-server
disabled rancher-server-stable
disabled amazon-metadata
disabled volume-cifs
disabled volume-efs
disabled volume-nfs
disabled modem-manager
disabled waagent
disabled virtualbox-tools
disabled pingan-amc
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Globalement, pas grand chose. La seule chose activée est le qemu-guest-agent, ce qui est utile puisque nous avons une effectivement une VM QEMU dans ce cas précis.
Quant à vos containers Docker, vous pouvez vérifier qu’ils sont bien séparés des containers docker servant au fonctionnement de RancherOS avec les commandes suivantes :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Les containers &amp;ldquo;systèmes&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;[rancher@rancher ~]$ sudo system-docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1e059e78c17e rancher/os-docker:19.03.11 &amp;#34;ros user-docker&amp;#34; 12 minutes ago Up 12 minutes docker
ba43a0648227 rancher/os-qemuguestagent:v2.8.1-2 &amp;#34;/usr/bin/ros entr...&amp;#34; 12 minutes ago Restarting (1) 34 seconds ago qemu-guest-agent
d9ad607221fa rancher/os-console:v1.5.6 &amp;#34;/usr/bin/ros entr...&amp;#34; 12 minutes ago Up 12 minutes console
ad0197c79ff2 rancher/os-base:v1.5.6 &amp;#34;/usr/bin/ros entr...&amp;#34; 12 minutes ago Up 12 minutes ntp
538ccf5eb624 rancher/os-base:v1.5.6 &amp;#34;/usr/bin/ros entr...&amp;#34; 12 minutes ago Up 12 minutes network
f389c6b0b40e rancher/os-base:v1.5.6 &amp;#34;/usr/bin/ros entr...&amp;#34; 12 minutes ago Up 12 minutes udev
b51deb379bf2 rancher/container-crontab:v0.4.0 &amp;#34;container-crontab&amp;#34; 12 minutes ago Up 12 minutes system-cron
59441adcc016 rancher/os-syslog:v1.5.6 &amp;#34;/usr/bin/entrypoi...&amp;#34; 13 minutes ago Up 12 minutes syslog
120df7cc2492 rancher/os-acpid:v1.5.6 &amp;#34;/usr/bin/ros entr...&amp;#34; 13 minutes ago Up 12 minutes acpid
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Vos containers :&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;[rancher@rancher ~]$ docker container ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Les containers &amp;ldquo;systèmes&amp;rdquo; sont bien distincts des containers docker &amp;ldquo;utilisateurs&amp;rdquo;. La promesse d’isolation Docker infra vs Docker appli est bien tenue.&lt;/p&gt;
&lt;h2 id="mon-avis"&gt;Mon avis
&lt;/h2&gt;&lt;p&gt;A voir à l’usage, mais je ne suis pas hyper convaincu.&lt;/p&gt;
&lt;p&gt;D’abord, en termes d’OS minimalistes, on a quand même vu mieux. Et d’ailleurs, &lt;a class="link" href="https://rancher.com/docs/os/v1.x/en/installation/custom-builds/custom-rancheros-iso/#reduce-memory-requirements" target="_blank" rel="noopener"
&gt;les gens chez Rancher le savent puisqu’ils se sentent obligés de s’en justifier&lt;/a&gt;&amp;hellip;&lt;/p&gt;
&lt;p&gt;Plus grave, l’UX est quand même super bof. J’ai l’habitude d’installer des softs mais je me suis quand même pris la tête avec le cloud-config assez moyennement documenté, et en plus, à faire DANS une console (et la galère QWERTY/AZERTY associée).&lt;/p&gt;
&lt;p&gt;&amp;ldquo;Et c’est pas fini&amp;rdquo;, comme dis la pub.&lt;/p&gt;
&lt;p&gt;Je vous l’ai dis, mon objectif est d’avoir un cluster Kubernetes installé par RKE. Or, il n’est pas trivial d’utiliser RancherOS comme OS pour hoster un Kubernetes déployé avec RKE. Vous verrez dans la partie 2 que ça n’a pas été une partie de plaisir&amp;hellip;&lt;/p&gt;
&lt;p&gt;Un comble pour 2 produits de la même boite censé vous simplifier l’administration de Docker/Kube&amp;hellip;&lt;/p&gt;
&lt;p&gt;Et plus grave encore, c’est que j’ai du mal à voir pour qui ce genre de distribs apporte de la valeur. C’est d’ailleurs pour cette même raison pour laquelle je n’avais pas poussé l’expérimentation très loin avec CoreOS. En tant qu’admin, je suis forcément frustré par un OS où je n’ai pas/peu la main.&lt;/p&gt;
&lt;p&gt;J’aime bien ce qu’ils font chez Rancher. Mais je ne sais pas répondre à la question Pourquoi RancherOS ?
On pourrait se dire que pour une équipe de développeurs en mode startup qui doit sortir son MVP en peu de temps, ça peut être cool.&lt;/p&gt;
&lt;p&gt;Mais même là, j’ai des doutes.&lt;/p&gt;
&lt;p&gt;Si ces gens là veulent VRAIMENT s’abstraire d’Ops (voir mon avis sur la question dans &lt;a class="link" href="https://blog.zwindler.fr/2020/07/29/au-secours-le-metier-dops-va-disparaitre/" &gt;Au secours, le métier d’Ops va disparaître !&lt;/a&gt;), ils partiront sur d’autres types de technos (Kubernetes managé, Serverless, No code ?).&lt;/p&gt;
&lt;p&gt;Si vous voyez une raison que j’aurais loupé, n’hésitez pas à venir en parler en commentaire ou via les RS, car là je vois pas&amp;hellip;&lt;/p&gt;
&lt;p&gt;En attendant la partie sur RKE, have fun :)&lt;/p&gt;</description></item><item><title>Echec déploiement package OVF: Cette tâche a été annulée par un utilisateur</title><link>https://blog.zwindler.fr/2015/03/30/echec-deploiement-package-ovf-cette-tache-a-ete-annulee-par-un-utilisateur/</link><pubDate>Mon, 30 Mar 2015 21:18:12 +0000</pubDate><guid>https://blog.zwindler.fr/2015/03/30/echec-deploiement-package-ovf-cette-tache-a-ete-annulee-par-un-utilisateur/</guid><description>&lt;img src="https://blog.zwindler.fr/2015/03/Failed-to-deploy-OVF-Package1.webp" alt="Featured image of post Echec déploiement package OVF: Cette tâche a été annulée par un utilisateur" /&gt;&lt;p&gt;[Edit]MAJ le 19/10 avec quelques captures d’écran[/Edit]&lt;/p&gt;
&lt;p&gt;Une manière simple de créer et de déployer des templates sous ESXi lorsqu’on ne dispose pas du vCenter et de la licence qui va bien est d’utiliser les templates OVF/OVA (&lt;a class="link" href="https://blog.zwindler.fr/2011/03/20/copier-une-vm-windows-xp-sous-esxi-sans-vcenter/" &gt;cf un de mes tous premiers articles&lt;/a&gt;). Je l’utilise d’ailleurs toujours aujourd’hui pour pallier le manque de licences sur certains sites distants/secondaires.&lt;/p&gt;
&lt;p&gt;Cependant, depuis la version 5 (ou peut être 5.1), j’ai été confronté à plusieurs reprises à l’erreur suivante lors du déploiement de l’OVA :&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Echec déploiement package OVF: Cette tâche a été annulée par un utilisateur&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;WTF ? Pas de code d’erreur, et un message pas vraiment loquasse&amp;hellip;&lt;/p&gt;
&lt;p&gt;J’ai eu beaucoup de mal à trouver la réponse à cette erreur en Français et il a d’ailleurs fallu que je le traduise mot pour mot en anglais pour trouver des ressources pour m’aider :&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Failed to deploy OVF package: The task was canceled by a user.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;[Edit] En 5.5, j’ai également rencontré le message suivant qui donne un peu plus d’informations sur le problème réel :&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;OVF Deployment Failed: File ds:///vmfs/volumes/uuid/_deviceImage-0.iso was not found&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2015/03/01_ovf_device.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;[/Edit]&lt;/p&gt;
&lt;p&gt;Et là on commence à trouver un peu d’aide sur le web. Parmi les liens intéressants sur le sujet, on peut citer le KB de VMware et lukebarklimore qui rentre un peu dans le détail de l’anatomie d’un OVF/OVA de chez VMware :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;KB VMware (lien mort, comme d&amp;rsquo;habitude)&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://lukebarklimore.wordpress.com/2012/10/25/esxi-5-1-fixing-failed-to-deploy-ovf-package-the-task-was-canceled-by-a-user/" target="_blank" rel="noopener"
&gt;lukebarklimore.wordpress.com/2012/10/25/esxi-5-1-fixing-failed-to-deploy-ovf-package-the-task-was-canceled-by-a-user/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ce qu’il faut en retenir, c’est :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;un OVA n’est en fait qu’une simple archive &lt;strong&gt;tar&lt;/strong&gt; (qu’on peut donc ouvrir avec un « &lt;em&gt;tar xf&lt;/em&gt; » ou un 7zip pour les Windowsiens&lt;/li&gt;
&lt;li&gt;Il contient un fichier &lt;strong&gt;.ovf&lt;/strong&gt; au format XML qui respecte la norme des OVF (enfin, si on peut appeler ça une norme ! &lt;em&gt;troll&lt;/em&gt;) et qui est en fait un descripteur du matériel virtuel de votre VM&lt;/li&gt;
&lt;li&gt;un ou plusieurs fichiers &lt;strong&gt;.vmdk&lt;/strong&gt;, vos disques durs virtuels&lt;/li&gt;
&lt;li&gt;un fichier &lt;strong&gt;.mf&lt;/strong&gt; qui ne contient en fait que le hash &lt;strong&gt;sha1&lt;/strong&gt; du fichier, pour le contrôle de la cohérence&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2015/03/03_ovf_device.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;Pour en venir au problème en lui même : il se produit lorsque les VMware Tools sont mal démontés ou se sont mal installés (ou mal terminé d’installer). La machine virtuelle garde en mémoire la présence de l’ISO et celui ci reste inscrit dans le descripteur OVF. Lorsqu’on déploie la VM, l’ISO n’est plus présent sur le serveur de destination et on obtient l’erreur susnommée.&lt;/p&gt;
&lt;p&gt;Pour résoudre le problème, il faut donc :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Extraire le fichier OVF de l’archive OVA&lt;/li&gt;
&lt;li&gt;Editer le fichier OVF, et remplacer la mention &lt;strong&gt;&lt;em&gt;vmware.cdrom.iso&lt;/em&gt;&lt;/strong&gt; par la valeur &lt;strong&gt;&lt;em&gt;vmware.cdrom.atapi&lt;/em&gt;&lt;/strong&gt; ou &lt;strong&gt;&lt;em&gt;vmware.cdrom.remotepassthrough&lt;/em&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Recalculer le nouveau hash SHA1 du fichier OVF édité&lt;/li&gt;
&lt;li&gt;Recréer une archive et y ajouter DANS CET ORDRE les fichiers .ovf PUIS .mf et .vmdk.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2015/03/04_ovf_device.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;tar xf maVM.ova #extraction des fichiers de l&amp;#39;archive
rm maVM.ova
vi maVM.ovf #si vous êtes sages je vous donnerai un &amp;#34;sed&amp;#34; pour éviter d&amp;#39;avoir à éditer le fichier
sha1sum maVM.ovf #récupérer le retour et remplacer le hash de l&amp;#39;OVF par la nouvelle valeur dans le fichier maVM.mf
tar cf maVM.ova maVM.ovf #recréation de l&amp;#39;archive
tar uf maVM.ova *.mf *.vmdk
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Si vous omettez de recalculer le checksum, VMware vous expliquera bien gentiment que le checksum n’est pas bon, et donc l’archive toute entière, donc pas de flemme !&lt;/p&gt;
&lt;p&gt;Et si vous ne les mettez pas dans cet ordre, vous aurez une autre erreur, très explicite cette fois ci qui vous expliquera que votre OVA est invalide car les fichiers ne sont pas dans le bon ordre&amp;hellip; Oui&amp;hellip; Vraiment.&lt;/p&gt;</description></item></channel></rss>