Un simple outils Python en ligne de commande qui reste la taille d'une image Docker et retourne une erreur si celle ci dépasse une taille donnée. A intégrer dans les CI pour s'assurer que les images Docker ne grossissent pas exponentiellement au fil du temps.
GCP fournis désormais des VM Windows disposant de docker pré-installé pour faire tourner des containers Windows.
Actuellement les images à utiliser sont:
- windows-2019-for-containers
- windows-2019-core-for-containers
- windows-1809-core-for-containers
- windows-1803-core-for-containers
(source: https://cloud.google.com/compute/docs/images#unshielded-images)
Une nouvelle vulnérabilité a été découverte dans runc qui permet aux containers Docker qui tournent en tant que root de devenir root sure le système hôte.
Il faut mettre à jour Docker (dernière version: 18.09.02).
Il est également recommandé de ne jamais faire tourner de containers en tant que root et de contrôler les images Docker qui tournent en production.
EDIT: voire également la communication côté K8S (https://kubernetes.io/blog/2019/02/11/runc-and-cve-2019-5736/) et AWS (https://aws.amazon.com/security/security-bulletins/AWS-2019-002/)
Terratest est un framework de test en Go pour automatiser les tests d'infrastructure Terraform, mais aussi Packer et Docker build.
Une image Docker CentOS 7 avec systemd pour tester des services nécessitant systemd dans un container.
Attention ce container doit démarrer en mode privilégié pour faire tourner systemd.
Utilisation de Packer et Ansible comme alternative aux Dockerfiles pour créer des images Docker.
La méthode proposée est plus complexe que les Dockerfiles mais réutilisable en dehors du monde Docker et beaucoup plus lisible.
Comment mettre en place des tests unitaires sur les images Docker à l'aide de RSpec et ServerSpec
Synthèse des nouveaux services EKS et Fargate annoncés aux AWS Re-Invent Summit cette année.
EKS (AWS Kubernetes managed solution) permet de déployer un cluster Kubernetes sur AWS en ne gérant que les workers nodes (masters nodes managés par AWS).
Fargate va plus loin en fournissant une solution 100% managée (workers nodes managés) pour ECS dans un premier temps puis EKS en 2018. Cette solution permet de déployer des containers sans ce soucier des instances EC2 sur lesquels ils tourneront et de payer uniquement pour les containers déployés (facturation par container au lieu de la facturation par instances EC2 démarrées dans le cluster).
Pour installer un cluster Kubernetes privé avec KOPS sur une infra AWS déjà existante (DNS, VPC, Subnets, ...)
EDIT
en complement un tuto qui permet de faire quasimment la même chose mais en utilisant KOPS pour exporter une configuration Terraform pour ceux qui utilisent déjà Terraform pour le reste de leur infrastructure:
https://ryaneschinger.com/blog/kubernetes-aws-vpc-kops-terraform/
Plein de paramètres java intéressants pour limiter les resources utilisées par une JVM dans un container.
Une bonne introduction à la partie networking de Kubernetes
Always set the -Xmx
parameter when you run a JVM inside a container:
- if not specified, the JVM will try to use up to 1/4 of the total memory of the container host
- if you only specify container memory limits, docker will kill the JVM process if it tries to grow above the container limits
Kops permet de créer un cluster Kubernetes complet et haute-dispo sur AWS.
Parmi les nombreuses features intéressantes:
- instances EC2 basées sur Debian
- instances dans des ASG (master et nodes)
- possibilité de créer un VPC dédié ou d'en utiliser un existant
- possibilité d'exporter la config au format terraform pour provisionner le cluster avec terraform
Pour automatiser la sauvegarde de volumes Docker sur S3 avec Duplicity:
docker run -v /var/run/docker.sock:/var/run/docker.sock:ro --rm -ti \
-e CONPLICITY_FULL_IF_OLDER_THAN="90D" \
-e CONPLICITY_REMOVE_OLDER_THAN="365D" \
-e CONPLICITY_TARGET_URL=s3://s3-eu-west-1.amazonaws.com/<s3-bucket>/<directory> \
-e AWS_ACCESS_KEY_ID=XXXXXXXXXX \
-e AWS_SECRET_ACCESS_KEY=XXXXXXXXXX \
camptocamp/conplicity
Une excellente explication du GELF driver Docker qui permet de centraliser les logs des containers dans un ELK, Graylog ou autre solution de centralisation de log du même type.
Comment centraliser les logs des containers Docker dans Cloudwatch en utilisant awslogs et comment les envoyer par la suite dans une stack ELK en passant par un export S3.
Playbook pour tester des plays ansible dans un container Docker:
ansible-playbook main.yml --extra-vars '{"tasks":["./task_file1.yml","./task_file2.yml","other_var":"value"]}'
Yannick Perré explique comment il a introduit ansible pour automatiser les déploiements manuels réalisés par des admin sys dans un contexte d'entreprise fonctionnant en silo, "à l'ancienne". Sans rentrer dans les détails, il mentionne l'utilisation de Jenkins pour fournir une interface type web pour exécuter les playbooks ansible (complexité masquée, odonnancement des executions, trace des execustions, ...).
Il explique ensuite comment il utilise docker avec ansible pour prototyper et tester avant un déploiement sur une infra VM classique.
La démarche est intéressante, car elle montre comment ansible peut être déployé step-by-step sur de petit périmètres (déploiement DB, puis applications, puis serveur d'applis, puis autres operations sysadmin) et s'adapter aux contraintes structurelles (frein au changement, process en places, ...) sans nécessiter de tout révolutionner.
Un scanner de vulnerabiltés opensource
pour images de container docker