Spero qualcuno possa darmi una mano con un problema che mi sta facendo impazzire. Ho un container basato su Alpine Linux e, nonostante stia lavorando con i permessi di root, non riesco a usare apk per installare nulla.
Praticamente, ogni volta che provo a lanciare un comando tipo apk add <pacchetto>, mi restituisce un errore di Unable to lock database: Read-only file system. Aggiungo che sto usando Kubernetes.
Qualcuno ha mai avuto un problema simile con Alpine e Apk? C’è qualche impostazione specifica o un “trucco” che mi sfugge per permettere la scrittura sul filesystem? Ogni suggerimento è super apprezzato!
Di seguito l’errore che mi esce
/ # whoami
root
/ # id
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel),11(floppy),20(dialout),26(tape),27(video)
/ # apk add --no-cache nano
ERROR: Unable to lock database: Read-only file system
ERROR: Failed to open apk database: Read-only file system
Il parametro readOnlyRootFilesystem in Kubernetes è un’impostazione di sicurezza che rende il filesystem principale del container in sola lettura.
Quando è impostato su true (come in questo caso), il container non può scrivere, modificare o creare file nel filesystem root. Può solo leggere i file esistenti.
Premessa: La presenza di tale flag è corretta ed è una best practice vivamente consigliata. Le modifiche di queste tipo devono esser fatte esclusivamente nella fase di build, non runtime.
Come risolvere velocemente?
Dovresti modificare il manifest (tenendo presente anche deployment o qualsiasi cosa gestisca quel pod) impostando la flag a false.