2. intranetum
Ramon Navarro Bosch
CTO iskra.cat
CTO intranetum.com
FWT plone.org
WHO AM I?
Machine Learning - Python - Angular 2
Agile Test Driven Development
Always a sysadmin in my heart
In love with docker / k8s
3. intranetumWHAT IS INTRANETUM?
BRAIN TO CLASSIFY
▸ Knowledge management
▸ Files, Notes, Links
▸ Deep learning by scope/user
▸ Auto classify information
▸ Search information
▸ Less time to find what you are
looking for + discover knowledge
inside the company
4. intranetumTHE PROBLEM
FAST, AGILE, TEST, COMPLEX
▸ We needed to develop a SaaS solution in 3 months (proof)
▸ 1 Desember - 23 Febrary (4YFN)
▸ A team of 2 developers
▸ Needs to be modular for evolution
▸ Needs to scale fast
▸ Initial architecture design showed 10 different
components ( 40 by the end of February )
10. intranetumCOMPONENTS
DOCKER
▸ General Adopted Container Solution
▸ Native support Mac OS X + Linux +
Windows
▸ Standardization of build process of
images
▸ Service is not an application, is a
container
▸ Ports, volumes and build layers
management
▸ Definition of repository of images
11. intranetumCOMPONENTS
KUBERNETTES (K8S)
▸ Same deployment infrastructure for
production, testing, development and
stage
▸ Same deployment infrastructure for cloud
and in-house
▸ Load balancer integrated
▸ Management of HDD
▸ Secret configuration management
▸ Internal network discovery (DNS)
▸ Jobs
12. intranetumCOMPONENTS
GOOGLE CLOUD PLATFORM
▸ Clusters for stage / production
▸ HTTPS load balancer
▸ 100% integrated with k8s
▸ Full system monitoring
▸ Scaling fast
▸ Private Docker Registry
37. intranetumDEVELOPMENT
ZOPE/PLONE - STAGE YAML
apiVersion: v1
kind: Service
metadata:
labels:
name: servicezeoclient
name: servicezeoclient
spec:
type: LoadBalancer
ports:
# The port that this service should serve on.
- port: 80
targetPort: 8080
protocol: TCP
# Label keys and values that must match in order to receive traffic for this service.
selector:
name: masterzeoclient
apiVersion: v1
kind: Service
metadata:
name: servicezeo
labels:
name: servicezeo
spec:
type: NodePort
ports:
- port: 8100
selector:
name: masterzeo
46. intranetumSO…
CONCLUSIONS
▸ Split arch in groups of components to test, deploy and develop
▸ K8s much powerful than docker-compose / swarm (rolling-
updates / secrets / scaling / jobs)
▸ Optimization Service on K8S vs SaaS (not everything in containers)
▸ Docker from moment 0 (easier than later)
▸ Tests in Docker, Dev outside Docker (find a way to isolate
components and connect to the testing/stage cluster)
▸ Proxy NPM / Debian packages / Pypi / … CI / CD is hard
47. intranetumI START TO BE HUNGRY…
FUTURE
▸ Ansible on docker ? - We use buildout
▸ Jenkins jobs to rollback to version X
▸ K8S jobs to manage backups/testing data set
▸ Docker to build Jenkins to build Docker
▸ Elastic search cluster deployment
▸ Remove keys from docker
▸ Local k8s hardware (Rancher)
▸ Upgrade jobs testing Stage
▸ TESTS on k8s cluster (snapshot)
49. intranetum…REALLY HUNGRY
OPEN QUESTIONS
▸ Container data manager VS SaaS data manager
▸ Volumes ZFS/NFS snapshoots
▸ Performance on computation container
▸ Persistent Disks vs local SSD vs Buckets vs RAM disk
▸ Monitoring ?
▸ More questions ?