Questa domanda è il risultato di un dibattito interno che coinvolge i dipartimenti di R & D, DevOps e di automazione della società per cui lavoro. Ecco la sintesi del dibattito:
automation: Abbiamo bisogno dell'accesso SSH a tutti i contenitori durante e dopo i test per automatizzare (almeno parzialmente) RCA, se non lo facciamo, molti errori di test rimarranno inspiegabili e il dipartimento di automazione dovrà fare molto lavoro manuale per analizzare i test. Il tempo trascorso meglio a scrivere nuovi test / fornire una copertura di prova migliore.
R & D: Saremmo lieti di avere accesso SSH perché vogliamo essere in grado di eseguire il debug casualmente dell'applicazione dopo la sua distribuzione o, riconfigurarla allo scopo di testare utilizzando parametri di configurazione che non è necessario essere generalmente disponibili / documentati.
DevOps: Fornire l'accesso SSH è un rischio per la sicurezza (cosa succede se dimentichiamo e lo lasciamo in produzione?). Parti dell'applicazione distribuite nel cloud, quindi, anche se non ci sono dati effettivi in quella distribuzione, le risorse di elaborazione possono essere compromesse. Molti dei contenitori utilizzati nella distribuzione effettiva sono contenitori di terze parti privi di demone SSH, a volte senza alcun sistema operativo, quindi affrontali: non avrai accesso completo a tutti i contenitori che desideri.
Che cosa dici, un requisito di SSH è giustificato? DevOps dovrebbe fare uno sforzo, o dovrebbe l'automazione / R & D pensare a soluzioni alternative?
Se hai un'opinione, puoi eseguirne il backup con una fonte attendibile?
L'implementazione effettiva coinvolge una dozzina di istanze Amazon EC2 che eseguono il cluster Kubernetes con microservizi Scala principalmente combinati con servizi Amazon RDB, ELK, ecc. e alcune caselle Amazon EC2 non containerizzate dedicate a cose come Kafka / MQ ecc.