Conformément à sa stratégie exposée en novembre dernier, Docker se rapproche des développeurs. En mars, il leur a communiqué sa feuille de route en sollicitant leurs remarques et, ce mois-ci, il vient de publier à leur attention un « post-mortem » détaillant un incident interne sur ses services cloud. C’est la 1ère fois que le spécialiste des containers le fait publiquement, l’objectif avoué étant de bâtir une relation de confiance entre ses utilisateurs et ses équipes. En novembre, après avoir vendu son activité Entreprises à Mirantis, Docker a annoncé son intention de se recentrer sur les développeurs avec ses solutions Desktop et Hub.
Le billet publié le 12 août dernier par Brett Inman, manager ingénierie senior du fournisseur, décrit un incident survenu début juillet sur le référentiel de stockage d’images de containers Docker Hub. Cette description de résolution de problème illustre un cas d’interaction complexe entre différents opérateurs de services dans le cloud. Entre 19h (UTC) le 5 juillet et 6 h 30 le 6 juillet, les utilisateurs d’Amazon Linux de plusieurs régions ont subi des interruptions de téléchargement d’images Docker stockées dans Docker Hub. « Le problème venait d’un mécanisme de protection anti-botnet déployé par notre fournisseur de CDN Cloudflare », explique Brett Inman. Les équipes de Docker, Cloudflare et AWS ont travaillé ensemble pour l’identifier et le mécanisme en question a été désactivé ce qui a permis de restaurer le service.
Autopsie d'un incident dans le cloud
Vers 1h 45 UTC le lundi 6 juillet - dimanche encore sur la côte Pacifique - Docker a été contacté par AWS concernant l’impossibilité, pour différents services et utilisateurs, d’extraire des images de Docker Hub, relate Brett Inman. Les équipes de l’infrastructure et du référentiel se penchent immédiatement sur le dysfonctionnement. Après vérification, elles ne trouvent rien d’anormal sur le référentiel lui-même, ni sur l’infrastructure AWS. « Cela nous indiquait que le problème était plutôt lié à une région ou à un mécanisme dans les services en panne », poursuit le manager ingénierie. Avertie par AWS que les systèmes affectés étaient ceux qui utilisaient Amazon Linux (dont des services de haut niveau comme Fargate), l’équipe de Docker commence à lancer des instances avec Amazon Linux et avec un autre système d’exploitation dans différentes régions AWS. Il s'avère que les deux OS fonctionnent bien dans la région us-east-1, alors que dans d’autres régions, Amazon Linux échoue à extraire les images tandis que l’autre OS y parvient. « Le fait que l’us-east-1 fonctionnait pour les deux OS a fait apparaître que le problème était lié à notre CDN, Cloudflare ». En effet, sur la région us-east-1, les images Docker Hub sont stockées dans des buckets S3 et les requêtes sont servies directement par S3. Dans les autres régions, elles l’étaient via le CDN.
Docker se rapproche alors de Cloudflare pour ouvrir un incident et les trois fournisseurs étudient le problème ensemble. Sur une découverte d’AWS faite en comparant les différences entre Amazon Linux et l’autre OS, Cloudflare s’aperçoit qu’une partie du trafic vers Docker Hub est abandonnée à cause d’un système d’atténuation anti-botnet ayant ajouté une détection marquant les paquets avec un certain attribut comme faisant potentiellement partie d’une attaque. Quoique monitorée par Cloudfare, cette interaction particulière n’avait pas encore été repérée. Après désactivation du mécanisme, le trafic Docker Hub a pu reprendre et l’incident a été clos à 6h 30 UTC.
Suppression des images de containers inactives pendant 6 mois
Concernant son référentiel de stockage d’images de containers, Docker a par ailleurs annoncé il y a quelques jours qu’il avait modifié sa politique de conservation des données. Sur les comptes gratuits de Docker Hub, le fournisseur vient d’instaurer une durée de conservation maximum de 6 mois sur les images inactives. Après 6 mois d'inactivité, les images seront programmées pour une destruction. Pour les conserver davantage, il suffit aux utilisateurs de souscrire un compte payant, Pro ou Team, dont le prix démarre à 5$ ou 7$ par mois.