Enable Watchtower for all services #123
No reviewers
Labels
No labels
Blocked
Existing Service
Infrastructure Issue
Refactor
Security Hardening
Security Issue
Service Idea
Service Removal
Upgrade service
No milestone
No project
No assignees
5 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: data.coop/ansible#123
Loading…
Reference in a new issue
No description provided.
Delete branch "watchtower"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Fixes #119
@ -13,2 +11,3 @@
WATCHTOWER_POLL_INTERVAL: "60"
- "/var/run/docker.sock:/var/run/docker.sock"
- "/root/.docker/config.json:/config.json:ro"
This means that
docker-registry
should be run beforewatchtower
right?Yes, which is currently also the case.
@ -3,3 +3,3 @@
docker_container:
name: watchtower
image: containrrr/watchtower:1.4.0
image: containrrr/watchtower:latest
Let's pin this to a version instead of latest.
Why not latest?
Because I want to avoid confusion due to an unintended upgrade.
I don't fully agree. I think it's better to always use the latest version security-wise, especially when it has access to the Docker socket.
I agree, and we should strive to upgrade whenever a new version is available. But I don't want stuff to suddenly break behaviour without us knowing why.
I'll pin it then. GitHub supports RSS feeds for releases, maybe we could use that to be notified about new releases? We could set up notifications in our Matrix channel somehow.
https://github.com/containrrr/watchtower/releases.atom
Sounds like a great idea!
Jeg kunne godt tænke mig at der blev lavet review af alle vores containere om de kan tåle at blive opgraderet automatisk. Specifikt er jeg skeptisk at containere der bruger databaser kan opgraderes automatisk. Er vi garanteret at containeren kommer med migration scripts som bliver kørt automatisk?
Jeg har ikke lyst til at vores services helt automatisk går i stykker af sig selv.
Enig, men så synes jeg at vi skal kontrollere det ved at pinne versioner via image tags, fremfor at slå Watchtower helt fra. F.eks. så er Nextcloud pinnet til
nextcloud:22-apache
, så Watchtower vil altid holde den på major version22.x.x
, men minor og patch versioner vil få opdateringer.(Fra eget setup kan jeg hilse og sige, at Nextcloud kræver database-migrering ved upgrade til version 25, men det beder den selv om første gang en admin-bruger logger på web UI'et og klares vha. et enkelt klik, og så et par shell commands).
Jeg ved at Rallly's
entrypoint.sh
kører migration hver gang containeren starter. Har ikke tjekket med de andre.Jeg synes det lyder fint med at indføre den regel at hvis man har sat et image til at være "latest" så bliver det opdateret. Alle services bør som regel være pinned så vi kan styre opgraderingerne - men der er tilfælde, som vores hjemmeside og medlemssystem, hvor det bare skal opgraderes så snart der bliver skubbet et nyt image op til docker repoet.
Hvad angår migreringer så er det lidt blandet - gitea, passit, rallly, vores medlemssystem, gør det alle automatisk - mastodon skal man køre ting selv.
Foreløbigt review
Efter forespørgsel fra @reynir ;)
Services der allerede bruger
latest
latest
, men den har etstable
som vi brugerServices der formentligt godt kan tåle
latest
latest
bruges i den officielleREADME.md
Selvom at services godt kan tåle at opgradere uden at vi skal ind og gøre noget vil jeg stadig gerne være meget påpasselig med at lade dem opgradere automatisk.
Der kan ske alt muligt som kan ende i at vi mister eller korrumperer data, og selvom at vi har backup kan der gå lang tid med at finde ud af hvornår var det nu egentlig at data forsvandt etc.
Jeg ser hellere at vi opgraderer services når vi ved at de er sikre at opgradere.
Services som ikke har den store omgang brugerdata, eller som vi styrer selv (som medlemsystemet) kan vi sagtens sætte på latest.
Her er min liste af services jeg har det fint med at have på latest👍
Jeg ved det ikke er mange, men jeg tror på at det vil skabe mindre bøvl for os, også selvom at det betyder at vi skal manuelt ind og opgradere.
Well, jeg kan godt se din pointe. For mit vedkommende, vil jeg gerne tilføje følgende til den liste:
latest
eller tilsvarende (måske med undtagelse af Restic og Passit)Problemet med at inkludere Rallly er at vi pludselig kan ende i en situation hvor at der er forsvundet "events" eller "tilmeldinger til events" fordi et eller andet går galt.
Når et docker image er released er det kun blevet testet af dem der har produceret imaget, for det meste. Så det bliver først rigtig tryktestet når det har været ude og folk har opgraderet. Her vil jeg helst ikke have at vi er en af dem der tester ;)
Ja helst sikkert at restic og passit skal pinnes.
Det kan jeg godt følge dig i. Problemet er bare, at Rallly ikke har noget versionssystem som sådan, så et image kan enten tagges
latest
eller med et commit-hash.Det er vel også en form for versionering (tongue-in-cheek :P). Men ja, så synes jeg at vi skal pinne til en specifik SHA værdi.
Jeg har lige opgraderet keycloak fra 15 til 20 - og det var ikke trivielt da indstillinger ændrer sig osv. Så hvis det var sket automatisk med en service hvilket ville betyde at denne går ned, så ville vi skulle håndtere det ekstraordinært, fremfor på et tidspunkt hvor det er os der styrer hvad der skal opgraderes og har forberedt os ved at læse opgraderings guides etc.
Jeg synes det lyder som en god ide at være varsom med sætte ting på auto. Hvis det er manuelle opdateringer kan I også annoncere det på forhånd, så folk har en chance for at vide at det dels er "meningen" hvis der er bump på vejen og dels at I nok allerede er på sagen.
Hvis der opstår variationer, så kan vi måske indføre et badge eller en ny definition til "stabilitet". Jeg tænker at "ustabil" både kan dække over "overlagt bleeding edge" eller "vi har ikke testet det her setup".
Jeg synes jeg er blevet overtalt om at
latest
nok ikke er hensigtsmæssigt. Hvad med evt. kun at pinne til major versioner på det meste, som vi allerede gør mednextcloud:25-apache
, sådan at tjenester stadig automatisk får minor- og patch-opdateringer (såfremt den bestemte tjeneste bruger semantisk versionering eller lignende). Om ikke andet, så er min holdning at som minimum bør patch-versioner opdateres automatisk, da det som regel er bugfixes og ikke-breaking ændringer.Med tjenester der ikke bruger SemVer eller andet lignende versioneringssystem, eller er meget kritiske mht. brugerdata eller infrastruktur (Mailu, Keycloak, nginx-proxy, etc.), kan vi gøre en undtagelse.
Og ja, vi skal helt sikkert annoncere hvis vi laver større opgraderinger på nogle af vores tjenester.
Ja! Det synes jeg lyder meget fornuftigt!
Cool. Jeg tror lige jeg merger main ind i denne branch, og så kigger jeg på pinning.
I think this is ready to be merged. What do you guys think?
CC: @data.coop/Owners
Lige et par ting :)
@ -115,3 +115,3 @@
domain: "pad.{{ base_domain }}"
volume_folder: "{{ volume_root_folder }}/hedgedoc"
version: 1.9.6
version: 1
Hvorfor ikke 1.9?
Fordi den kører SemVer, så minor opgraderinger har ikke breaking changes.
@ -34,4 +34,2 @@
DJANGO_ADMINS: "{{ services.membersystem.django_admins }}"
DEFAULT_FROM_EMAIL: "noreply@{{ services.membersystem.domain }}"
labels:
com.centurylinklabs.watchtower.enable: "true"
Den her skal blive - deploy af membersystem afhænger af watchtower :)
@ -11,4 +10,1 @@
- /var/run/docker.sock:/var/run/docker.sock
- "{{ services.docker_registry.volume_folder }}/auth/config.json:/config.json"
env:
WATCHTOWER_LABEL_ENABLE: "true"
Hvordan er det nu at services der skal opdateres bliver fundet hvis det ikke er via label?