<style> .reveal { font-size: 35px; } li { margin-top: 20px; } .reveal blockquote { width: 100%; } </style> # Hvordan en gunzip-kommando halverede størrelsen på Obvius' images Link til slides: https://hackmd.io/@wonderfulspam/mythic_gunzip --- ## Hvad handler det om? - Docker - [Kaniko](https://github.com/GoogleContainerTools/kaniko) - Obvius CMS' statistikmodul --- ## Hvorfor bruger vi Docker-containers? - Et "interface" de fleste kan snakke med - Indkapsling frem for upålidelige `install.sh`-scripts og manuelt vedligehold - Det smager lidt af Cloud og andre buzzwords<!-- .element: class="fragment" data-fragment-index="1" --> --- ## Hvad er Kaniko? - Et byggeværktøj til Docker-containers - Lavet til Kubernetes = daemonless! - Spoiler alert: Et upålideligt stykke software<!-- .element: class="fragment" data-fragment-index="1" --> --- ## Kaniko-issues ---- ![Labs-vejledning](https://i.imgur.com/Hg5Kas2.png) ---- ![Dockerfile](https://i.imgur.com/l41ZtVc.png) ![KU-issue](https://i.imgur.com/MDeEcFX.png) ![KU-MR](https://i.imgur.com/QVZOqEd.png)<!-- .element: class="fragment" data-fragment-index="2" --> ---- ## Alt virkede, men ... --- ## Før ```bash ❯ CI=true dive magentaaps/obvius-web:ku_rollout_2021_04_29_version734 Using default CI config Image Source: docker://magentaaps/obvius-web:ku_rollout_2021_04_29_version734 Fetching image... (this can take a while for large images) Analyzing image... efficiency: 99.5985 % wastedBytes: 5427858 bytes (5.4 MB) userWastedPercent: 0.6681 % ``` --- ## Efter ```bash ❯ CI=true dive magentaaps/obvius-web:ku_rollout_2021_05_06_version735 Using default CI config Image Source: docker://magentaaps/obvius-web:ku_rollout_2021_05_06_version735 Fetching image... (this can take a while for large images) Analyzing image... efficiency: 51.1088 % wastedBytes: 1659744310 bytes (1.7 GB) userWastedPercent: 100.6961 % Inefficient Files: (...) Results: FAIL: highestUserWastedPercent: too many bytes wasted, relative to the user bytes added (%-user-wasted-bytes=1.0069613535231479 > threshold=0.1) FAIL: lowestEfficiency: image efficiency is too low (efficiency=0.5110878833207623 < threshold=0.9) ``` --- ## Det store forkromede fix ![Fix-MR](https://i.imgur.com/qRvrK2j.png) --- ## Konsekvenser - Pipelines kører 2 minutter hurtigere pga. mindre images - Deploys er ½ minut hurtigere --- ## Hvad kan vi gøre? - Tjek jeres Docker images med [wagoodman/dive](https://github.com/wagoodman/dive) - Automatisere tjek i pipelinen vha. `dive` el.l. - Udskifte Kaniko med Buildkit ([#45062](https://redmine.magenta-aps.dk/issues/45062)) --- <!-- .slide: data-background="https://c.tenor.com/IKFHESxZBD4AAAAd/bo-bech-med-kniven-for-struben.gif" data-background-size="contain" -->
{"metaMigratedAt":"2023-06-16T08:44:57.342Z","metaMigratedFrom":"YAML","title":"War story: Hvordan en gunzip-kommando sparede 1GB","breaks":true,"description":"Om hvordan kaniko er noget skrald","slideOptions":"{\"transition\":\"fade\"}","contributors":"[{\"id\":\"17d7727a-9f6e-4f1f-94fd-2c7582b04b63\",\"add\":4162,\"del\":1205}]"}
    836 views