<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
----

----


<!-- .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

---
## 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}]"}