Jadi, saya mencoba menjalankan Nexus berdasarkan gambar ini di Kubernetes, tetapi gagal dengan:
mkdir: cannot create directory '../sonatype-work/nexus3/log': Permission denied
mkdir: cannot create directory '../sonatype-work/nexus3/tmp': Permission denied
Java HotSpot(TM) 64-Bit Server VM warning: Cannot open file ../sonatype-work/nexus3/log/jvm.log due to No such file or directory
Dari dokumentasi dikatakan bahwa proses berjalan dengan UID 200 dan volume harus dipasang dengan izin itu:
A persistent directory, /nexus-data, is used for configuration,
logs, and storage. This directory needs to be writable by the Nexus
process, which runs as UID 200.
Saya telah mencoba mencari melalui dokumentasi untuk menemukan cara untuk memasang volume dengan izin tersebut, namun, saya tidak dapat menemukan cara untuk melakukannya.
Apakah ada yang tahu apakah Anda dapat menentukan dalam konfigurasi untuk PVC / PV atau Deployment dengan UID apa untuk memasang volume? Jika ya, bagaimana caranya?
sumber
command: ["sh", "-c", "chmod 777 /nexus && chown 200:200 /nexus"]
untuk memastikan folder tersebut dapat ditulisi.Seperti kata Anton, meskipun kami tidak dapat mengatur UID menggunakan definisi Pod. Inilah solusi lain untuk topik ini.
Silakan merujuk ke dokumen resmi Kubernetes Mengkonfigurasi Konteks Keamanan untuk Pod atau Wadah
Definisi pod yang saya gunakan:
Definisi Layanan:
Dan kemudian membuat pod dan layanan tanpa izin apa pun ditolak atau kesalahan lain:
Coba masuk wadah Nexus3 dan periksa pemilik / izin / nexus-data:
Seperti yang Anda lihat, direktori milik root: nexus, dan Anda juga dapat memeriksa file di direktori:
Itulah kekuatan SetGID :)
Sekarang, mari kita periksa apakah layanannya berfungsi atau tidak. Saya menggunakan minikube untuk menjalankan cluster kubernetes:
Layanan ini berfungsi seperti yang diharapkan.
sumber
Mengenai Torsten Bronger 's komentar , ketika Anda mengkonfigurasi ConfigMaps dan Rahasia dalam array volume di pod spec, Anda dapat menentukan izin untuk memungkinkan akses yang ingin menggunakan
defaultMode
properti, sehingga saat Anda tidak bisa set kelompok dan pengguna kepemilikan, Anda dapat memungkinkan proses di pod untuk membaca file di mount tersebut. Menulis ke peta rahasia atau konfigurasi tidak benar-benar masuk akal dan mode izin defaultnya adalah 755 jadi membaca seharusnya tidak menjadi masalah bagi pengguna mana pun.sumber