Bir küme olmadan docker sırları nasıl kullanılır?


29

Şu anda tek bir liman işçisi konteynerinde çalışan bir uygulama imzalıyoruz, uygulamanın ortam değişkenleri olarak iletilmesi için her türlü hassas veriye ihtiyacı var,

Bunları run komutuna ekliyorum, böylece görüntüde ve sonra bir depoda kalmayacaklar, ancak çok güvenli olmayan bir çalıştır komutu ile bitirdim.

Şimdi, liman işçisi sırlarının var olduğunu anlıyorum, ancak kümeleri dağıtmadan bunları nasıl kullanabilirim? ya da bu verileri güvenceye almanın başka bir yolu var mı?

Saygılarımla,


Yanıtlar:


6

Yapamazsın ... Sürü olmadan sırları desteklemez. '' Olmazsa '' siz '' Sürüsü '' sadece bir düğüm kullanarak.

Diğer çözüm, bunun gibi bir üçüncü taraf kasa yazılımı kullanacağımı düşünüyorum:

https://www.vaultproject.io/

Fakat sonra, kaplarınızdaki sırları Vault'dan kullanmak için dokümanı okumanız gerekir.

Umarım bu sizi başlatmak için doğru yola getirir.


Aslında sadece kapları oluştururken bu sırları enjekte etmem gerekiyor, çalışan kapların içinde gerçekten "gizli" olmaları gerekmiyor, sanırım ev sahibinin sırları çağırırken sırlara erişmesi ve bu sırları kullanması mantıklı olacaktır. docker çalıştır komutu, sanırım bir sürü yerine ve tonoz çağrısına sahip bir betik yazabiliyorum.
Juan Sebastian,

@JuanSebastian, bu kullanım durumu için Docker 'build-args' bölümünü kontrol etmelisiniz.
user23390

Ben yanlış olabilir, ama yerel ENV alma Thoses birikmesi args içinde ne size verecek @JuanSebastian .... emin değil .....
verim

build-argsson görüntüye dahil edilmezler, ancak yalnızca görüntü oluşturma süresi boyunca erişilebilir. Uygun bir çözüm, sırları ana bilgisayardaki dosyalara (tabii ki uygun izinlerle) yazdıktan sonra bunları docker kapınıza hacimli olarak monte etmektir. Konteynır içindeki uygulamanız bu dosyalardan gelen sırları okuyabilir
Brandon,

22

Evet , bir oluşturma dosyası kullanıyorsanız sırları kullanabilirsiniz . (Sürü sürmene gerek yok).

Docker-compose ile bir compose dosyası kullanıyorsunuz : docker-compose.yml dosyasında "sırlar" için belgeler var .

Docker-besteye geçtim çünkü sır kullanmak istedim. Yaptığım için mutluyum, çok daha temiz görünüyor. Her servis bir konteynere eşlenir. Ve onun yerine hiç bir sürüye koşmaya geçmek istersen, aslında zaten oradasın.

Not: Sırlar kabın çevresine yüklenmez, bunlar / run / secrets /

İşte bir örnek:

1) Proje Yapısı:

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

2) docker-compose.yml içerikleri:

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) super_duper_secret.txt içeriği:

Whatever you want to write for a secret really.

4) Konteynerin sırrınıza erişebildiğini görmek için bu komutu projenin kökünden çalıştırın, (Docker çalışıyor ve docker-compose yüklü olmalı):

docker-compose up --build my_service

Kabı çıktığını sırrını görmelisin.


docker-composeBir sır kullanmanın çalışan bir örneğini gösterebilir misiniz ? Dokümantasyon ve uygulama hakkındaki anlayışım sırrın konteynerde yapılandırılmayacağını göstermektedir.
BMitch

2
Docker sırları, bağımsız konteynırlara değil yalnızca hizmetleri sürmek için kullanılabilir. Bu özelliği kullanmak için, kabınızı hizmet olarak çalışacak şekilde uyarlamayı düşünün. Durum bilgisi olan konteynerler, konteyner kodunu değiştirmeden tipik olarak 1 ölçekle çalışabilir. liman işçisi
Alwin Kesler

@BMitch Bir örnek eklendi. Umarım size yardımcı olur! (Liman işçisi ile çalıştığımdan beri bir süre geçti ve ortamım biraz daha fazla ... ama bunun çalışması gerektiğini düşünüyorum. Lütfen bir şeyleri kaçırırsam lütfen bana bildirin!)
Lindsay-Needs-Sleep

Sürüsüz servislerimde bunu çoğaltamam ( docker-compose.ymltek bir düğümde); başlattığım zaman konteyner /runsadece bir içerir nginx.pidve burada Mountsgösterilmez docker inspect $container.
giorgiosironi

2
Sadece bunu basit docker-compose'a ekleyen PR ile bağlantı kurabileceğimi düşündüm (sürüsüz). github.com/docker/compose/pull/4368 Gerçekten de orada ve koddan derleme dosyasının min versiyonu gibi görünüyor 3.1 ve API 1.13.0. Kod hala geçerli master'de ( github.com/dnephin/compose/blob/… ), bu nedenle maksimum sürüm beklemeyin.
ssnobody
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.