2015-04-20 33 views
9

Vorrei configurare un server master Jenkins protetto su ec2 con finestra mobile. Sto utilizzando il file mobile di Jenkins standard da qui: https://registry.hub.docker.com/_/jenkins/Configurazione protetta master Jenkins con finestra mobile

Per impostazione predefinita si apre una porta HTTP 8080 non protetta. Comunque voglio che usi una porta standard 443 con https (inizialmente voglio usare il certificato ssl autofirmato).

Ho studiato un po 'questo argomento e ho trovato diverse soluzioni possibili. Non ho molta esperienza con la finestra mobile, quindi non riesco ancora a trovarne uno semplice da utilizzare o implementare. Qui ci sono alcune opzioni che ho trovato:

  • uso standard Jenkins finestra mobile sul 8080, ma configurano un apache protetto o un server nginx sulla mia istanza EC2 che reindirizza il traffico. Non mi piace perché il server si troverà all'esterno della finestra mobile, quindi non posso mantenerlo nel controllo della versione
  • In qualche modo modificare il file di finestra mobile di jenkins per avviare jenkins con un https configurato in base a https://wiki.jenkins-ci.org/display/JENKINS/Starting+and+Accessing+Jenkins. Non sono sicuro di come farlo comunque. Devo creare il mio contenitore docker?
  • utilizzare il file di finestra mobile con nginx protetto come questo https://registry.hub.docker.com/u/marvambass/nginx-ssl-secure/ e in qualche modo combinare due contenitori di finestra mobile o farli comunicare? Non sono sicuro di come sia.

Qualcuno potrebbe sperimentare per favore mi consiglia la soluzione migliore?

P.S. Non sono sicuro di quanti problemi ci darà Ec2, ma presumo che si tratti di aprire 443 in un gruppo di sicurezza.

risposta

14

Dopo aver passato alcuni tutorial su Docker, ho trovato che l'opzione più semplice da seguire è il numero 2. Immagine docker Jenkins dichiara il punto di ingresso in un modo che è possibile passare facilmente argomenti al jenkins.

Diciamo che avete il vostro keystore (ad esempio autofirmato in questo esempio) come jenkins_keystore.jks nella cartella home dell'istanza di ubuntu ec2.Ecco l'esempio di come generare uno:

keytool -genkey -keyalg RSA -alias selfsigned -keystore jenkins_keystore.jks -storepass mypassword -keysize 2048 

Ora si può facilmente configurare Jenkins da eseguire su https solo senza creare la propria immagine finestra mobile:

docker run -v /home/ubuntu:/var/jenkins_home -p 443:8443 jenkins --httpPort=-1 --httpsPort=8443 --httpsKeyStore=/var/jenkins_home/jenkins_keystore.jks --httpsKeyStorePassword=mypassword 
  • -v /home/ubuntu:/var/jenkins_home espone la cartella home ospitato jenkins docker container
  • -p 443:8443 mappe 8443 porta jenkins nel container alla porta 443 dell'host
  • --httpPort=-1 --httpsPort=8443 blocca jenkins http e lo espone con https sulla porta 8443 all'interno del contenitore
  • --httpsKeyStore=/var/jenkins_home/jenkins_keystore.jks --httpsKeyStorePassword=mypassword fornisce il keystore che è stato mappato dalla cartella home host alla cartella container /var/jenkins_home/.
0

Vorrei usare nginx insieme a jenkins nello stesso contenitore e utilizzare supervisord per gestire entrambi i processi. Garantire servizi diversi con strumenti integrati è un problema; nginx funziona allo stesso modo per tutti i servizi ed è facile da configurare. È possibile, e in qualche modo più bello, usare docker-compose (era fig) per creare due diversi contenitori e collegarli con il bel networking interno che la finestra mobile fornisce con i collegamenti. Il problema è che l'esecuzione di coppie di lavori insieme non è ancora ben supportata nei gestori di cluster come la maratona. È molto più semplice dire alla maggior parte dei servizi di eseguire un singolo contenitore, piuttosto che eseguire due contenitori, ma assicurarsi che siano sullo stesso host.

Problemi correlati