2016-05-03 38 views
6

Ho installato il Servizio contenitore di Azure utilizzando DC/OS + Marathon per la distribuzione di contenitori Docker. Finora sembra buono, posso connettermi al nodo principale usando il tunnel SSH e accedere a Mesos e Marathon WebUI e anche a raggiungere l'API REST.Come condividere in modo sicuro le credenziali di accesso al repository docker private nel servizio contenitore Azure con Mesos & Marathon

Successivamente, si sta tentando di distribuire un contenitore finestra mobile dal mio repository docker privato e ho trovato il seguente articolo sul sito Web di Marathon.

https://mesosphere.github.io/marathon/docs/native-docker-private-registry.html

Si prega di consultare la sezione "Note" dall'alto URL -

Nota: L'URI deve essere accessibile da tutti i nodi che possono iniziare la vostra applicazione. Gli approcci possono includere la distribuzione del file sul filesystem locale di tutti i nodi, ad esempio tramite RSYNC/SCP, o la memorizzazione su un'unità di rete condivisa, ad esempio Amazon S3. Vale la pena considerare le implicazioni sulla sicurezza del tuo approccio scelto.

Quali opzioni offre Azure per la condivisione del file docker.tar.gz su tutti i nodi?

Grazie

risposta

1

il modo in cui l'abbiamo fatto è utilizzare parallel-scp di spingere il file a tutti i nostri agenti Mesos, qualcosa di simile:

parallel-scp -h ~/pssh_all_ips ./docker.tar.gz /etc/docker.tar.gz 

Dove pssh_all_ips è una nuova linea di file di indirizzi IP interni separati (10.0.*.* o 10.32.*.* nel nostro caso).

È possibile trovare gli indirizzi IP dell'agente a localhost:2000/mesos/#/slaves se si esegue il tunneling nel cluster.

Questo rende il file disponibile su file:///etc/docker.tar.gz su tutti gli agenti, da lì è possibile utilizzare il campo URI di marathon per renderlo disponibile al sistema di estrazione docker.

+0

grazie per le informazioni. Se conosciamo tutti gli agenti IP allora sì, questo approccio funzionerebbe. Ma il numero di slave può variare in quanto Azure li ridimensiona su/giù. Sto provando a fare una distribuzione usando Jenkin chiamando l'API Marathon. Non sono sicuro che questo approccio sia pratico per interrogare prima tutti gli indirizzi IP degli agenti. Spero che Azure Container Service fornisca qualcosa di simile a AWS ECS in cui, utilizzando i ruoli IAM, possiamo condividere file dal bucket S3. –

1

Un metodo consiste nell'utilizzare uno script per analizzare gli agenti nel cluster. Dai uno sguardo a https://github.com/rgardler/acs-cli per alcuni esperimenti su come farlo.

+0

Grazie Ross.Se non ci sono altri modi forniti da Azure, dovremo utilizzare questa opzione. Comprendo che Azure Container Service è relativamente nuovo. Non sono sicuro che questo forum sia appropriato, ma posso chiederti del piano a lungo termine di Microsoft per risolvere questo problema? O pensi che questo problema appartenga a Mesos/Marathon? –

+1

Questo forum è appropriato. Il nostro piano (Microsoft) è quello di risolvere questo. Non ho una data da condividere ma qualcosa arriverà, indipendentemente dal fatto che decidiamo che è un DC/OS (Mesos/Marathon) o ACS, stiamo contribuendo ai progetti upstream quindi puoi aspettarci che la risolviamo se nessun altro lo fa. – rgardler

+0

Grazie Ross, non vedo l'ora che arrivi la correzione. –

5

Inserisci il tuo docker.tar.gz in Archiviazione di Azure e crea un URL firmato. Ho usato Azure Storage Explorer per crearne uno.

Uscita;

https://xyzds.file.core.windows.net/docker/docker.tar.gz?...url-params

è necessario aggiungere l'estensione di file al fine di maratona estrarlo.

x=.tar.gz

"uris": [ "https://xyzds.file.core.windows.net/docker/docker.tar.gz?...url-params&x=.tar.gz" ]

vi sono buone per andare.