Bagaimana cara menggunakan rahasia buruh pelabuhan tanpa sekelompok kawanan?

29

Saat ini kami sedang menjalankan aplikasi pada wadah buruh pelabuhan tunggal, aplikasi ini membutuhkan semua jenis data sensitif untuk dikirimkan sebagai variabel lingkungan,

Saya menempatkan mereka di perintah jalankan sehingga mereka tidak berakhir di gambar dan kemudian di repositori, namun saya berakhir dengan perintah jalankan sangat tidak aman,

Sekarang, saya mengerti bahwa ada rahasia buruh pelabuhan, bagaimana saya bisa menggunakannya tanpa menggunakan cluster? atau adakah cara lain untuk mengamankan data ini?

Salam Hormat,

Juan Sebastian
sumber
6
Ada beberapa cara untuk menggunakan rahasia tanpa gerombolan blog.mikesir87.io/2017/05/…
Aleksandr Aksarin

Jawaban:

6

Anda tidak bisa ... Itu tidak mendukung rahasia tanpa Swarm. Kecuali jika '' mungkin '' Anda '' Berkerumun '' hanya menggunakan satu simpul.

Solusi lainnya adalah, saya pikir menggunakan perangkat lunak kubah pihak ketiga seperti ini:

https://www.vaultproject.io/

Tetapi kemudian, untuk menggunakan rahasia dalam wadah Anda dari Vault, Anda perlu membaca dokumen tersebut.

Semoga ini membawa Anda ke jalan yang benar untuk memulai.

menghasilkan
sumber
Sebenarnya saya hanya perlu menyuntikkan rahasia ini ketika membuat wadah, mereka tidak benar-benar harus tetap "rahasia" di dalam wadah yang sedang berjalan, jadi saya rasa masuk akal bagi tuan rumah untuk dapat mengakses dan menggunakan rahasia ketika menggunakan buruh pelabuhan menjalankan perintah, saya kira saya dapat menulis skrip dengan sekelompok pengganti dan panggilan ke lemari besi.
Juan Sebastian
@JuanSebastian Anda harus memeriksa Docker 'build-args' untuk kasus penggunaan itu.
user23390
@JuanSebastian saya mungkin salah, tetapi mendapatkan ENV lokal akan memberi Anda apa yang ada di dalam mereka membangun-args .... Tidak yakin .....
hasil
build-argstidak termasuk dalam gambar akhir, tetapi hanya dapat diakses selama waktu pembuatan gambar. Solusi yang cocok adalah menulis rahasia ke file di host (dengan izin yang sesuai, tentu saja) kemudian volume me-mount mereka ke dalam wadah buruh pelabuhan Anda. Aplikasi Anda di dalam wadah kemudian dapat membaca rahasia dari file-file itu
Brandon
22

Ya , Anda dapat menggunakan rahasia jika Anda menggunakan file penulisan . (Anda tidak perlu menjalankan gerombolan).

Anda menggunakan file penulisan dengan docker-compose : ada dokumentasi untuk "rahasia" di file docker-compose.yml .

Saya beralih ke komposisi buruh pelabuhan karena saya ingin menggunakan rahasia. Saya senang saya lakukan, tampaknya jauh lebih bersih. Setiap layanan memetakan ke sebuah wadah. Dan jika Anda ingin beralih ke menjalankan kawanan sebagai gantinya, Anda pada dasarnya sudah ada di sana.

Catatan: Rahasia tidak dimuat ke dalam lingkungan penampung, mereka dipasang ke / run / rahasia /

Berikut ini sebuah contoh:

1) Struktur Proyek:

|
|---    docker-compose.yml
|---    super_duper_secret.txt

2) konten docker-compose.yml:

version: "3.6"

services:

  my_service:
    image: centos:7
    entrypoint: "cat /run/secrets/my_secret"
    secrets:
      - my_secret

secrets:
  my_secret:
    file: ./super_duper_secret.txt

3) konten super_duper_secret.txt:

Whatever you want to write for a secret really.

4) Jalankan perintah ini dari root proyek untuk melihat bahwa kontainer memang memiliki akses ke rahasia Anda, (Docker harus berjalan dan komposer docker terpasang):

docker-compose up --build my_service

Anda harus melihat wadah Anda menampilkan rahasia Anda.

Lindsay-Kebutuhan-Tidur
sumber
Bisakah Anda menunjukkan contoh kerja docker-composemenggunakan rahasia? Dokumentasi dan pemahaman saya tentang implementasi menunjukkan bahwa rahasia tidak akan dikonfigurasi dalam wadah.
BMitch
2
Rahasia Docker hanya tersedia untuk mengerumuni layanan, bukan untuk wadah mandiri. Untuk menggunakan fitur ini, pertimbangkan menyesuaikan wadah Anda untuk dijalankan sebagai layanan. Wadah stateful biasanya dapat dijalankan dengan skala 1 tanpa mengubah kode kontainer. buruh pelabuhan
Alwin Kesler
@BMitch Menambahkan sebuah contoh. Semoga ini bisa membantu Anda! (Sudah beberapa saat sejak saya bekerja dengan buruh pelabuhan dan lingkungan saya sedikit lebih banyak terjadi ... tapi saya pikir ini harus bekerja. Tolong beri tahu saya jika saya melewatkan sesuatu!)
Lindsay-Needs-Sleep
Saya tidak dapat mereplikasi ini di layanan saya tanpa gerombolan ( docker-compose.ymlpada satu node); ketika saya memulai wadah /runhanya berisi nginx.piddan tidak ada yang Mountsditunjukkan oleh docker inspect $container.
giorgiosironi
2
Hanya berpikir saya akan tautan ke PR yang menambahkan ini ke docker-compose (tanpa gerombolan). github.com/docker/compose/pull/4368 Ini benar-benar ada di sana dan dari kode sepertinya versi min untuk file penulisan 3.1 dan API 1.13.0. Kode masih dalam master saat ini ( github.com/dnephin/compose/blob/… ), jadi tidak akan mengharapkan versi maksimal.
ssnobody