Mam małą sieć firmową z następującymi usługami / serwerami:
- Jenkins
- Stash (Atlassian)
- Confluence (Atlassian)
- LDAP
- Owncloud
- zabbix (monitorowanie)
- marionetka
- i niektóre aplikacje internetowe Java
wszystkie działające w oddzielnych kvm (libvirt) -vms w oddzielnych wirtualnych podsieciach na 2 komputerach (1 wewnętrzny, 1 serwer hetzner-rootserver) z interfejsem między nimi. Zastanawiam się nad przejściem do Docker.
Ale mam dwa pytania:
- Jak mogę osiągnąć bezpieczeństwo sieci między kontenerami docker (tzn. Chcę uniemożliwić dostęp do hostów w sieci z wyjątkiem ldap-hosts-sslport)
- Tylko za pomocą dokowania? Jeśli tak: czy doker naprawdę zezwala na dostęp tylko do połączonych kontenerów, ale nie ma innych?
- Korzystając z kubernetes?
- Dodając wiele interfejsów sieciowych dla każdego kontenera?
- Czy przełączysz wszystkie moje infra-usługi / -serwery na dokowanie, lub rozwiązanie hybrydowe z tylko owncloud i aplikacjami java-web na docker?
Odpowiedzi:
1 dla odpowiedzi № 1Odnośnie sieci z wieloma hostami: masz rację, że łącza Docker nie działają na hostach. W Dockerze 1.9+ możesz używać "Docker Networking", jak opisano w ich poście na blogu http://blog.docker.com/2015/11/docker-multi-host-networking-ga/
Nie wyjaśniają, jak zabezpieczyć połączenia,chociaż. Zdecydowanie zalecam włączenie TLS w twoich demach Docker, które powinny również zabezpieczyć twoją sieć wielu hostów (to jest założenie, którego nie próbowałem).
W przypadku Kubernetes masz zamiar dodać kolejną warstwęabstrakcji, abyś musiał nauczyć się pracy z pojęciem strąków i usług. To dobrze, ale może być trochę za dużo. Pamiętaj, że nadal możesz zdecydować się na użycie Kubernetes (lub alternatyw) później, więc pierwszym krokiem powinno być poznanie, w jaki sposób możesz zawijać swoje usługi w kontenerach Docker.
Nie będziesz musiał koniecznie zmieniać wszystkiegodo Dockera. Powinieneś zacząć od Jenkinsa, aplikacji Java lub OwnCloud, a następnie nieco bardziej przyzwyczaić się do uniwersum Docker. Jenkins i OwnCloud dadzą Ci wystarczająco dużo wyzwań, aby zdobyć doświadczenie w utrzymaniu pojemników. Następnie można ocenić znacznie lepiej, jeśli Docker ma sens w konfiguracji i gdy trzeba zastosować inne usługi.
Osobiście staram się zawijać wszystko w Dockerze,ale tylko z jednego powodu: utrzymania hosta w czystości. Jeśli dojdziesz do punktu, w którym wszystko działa w Dockerze, będziesz miał znacznie więcej swobody w wyborze miejsca, w którym usługa może działać, i możesz łatwiej przenosić pojemniki na inne hosty.
Powinieneś również zapoznać się z Docker Hub, w którym można znaleźć gotowe do uruchomienia rozwiązania, np. Atlassian Stash: https://hub.docker.com/r/atlassian/stash/
Jeśli potrzebujesz inspiracji do specjalnych zastosowań i jak zawijać je w Dockerze, polecam zajrzeć https://github.com/jfrazelle/dockerfiles - znajdziesz tam kilka dobrych przykładów.