Stas Ivaschenko (Senior Operations Analyst/DevOps engineer at Provectus, Inc)
Senior DevOps engineer, more than 10 years in IT.
AWS, Chef, Ansible, Kubernetes, Docker, Hadoop.
Best customers: Symantec, CloudMade
Kubernetes is up and running, what's next? We will talk about recent experience with Kubernetes-centric Serverless technologies. Concepts, overview of 2 frameworks: funktion from RedHat's Fabric8 and Kubeless. How they stand against AWS Lambda and how they rely on Kubernetes internals to do what they are doing.
2. provectus.com
Provectus – международная R&D компания, предоставляющая полный комплекс услуг по
разработке программного обеспечения для корпоративного сегмента, мобильных платформ и
WEB по всему миру.
Palo Alto, California, USA
Odesa, Ukraine
Kazan, Russia
Kyiv, Ukraine
8. provectus.com
Similarities and differences
Similarities:
• Provide Function-as-a-service
• Rely on Kubernetes for infrastructure, scaling and configuration
• Use containers for runtimes
Differences:
• methods of handling events, event types, external integrations
• Exact implementation
• ability to group functions into Applications
9. provectus.com
Funktion
Make no mistake, This is RedHat!
• Part of Fabric8 platform
• Which is an upstream from Openshift by RedHat
• Uses Apache Camel for event sourcing(over 200 connectors)
• Supports Flows as a way to combine multiple functions into complex applications
• Out of the box runtimes: NodeJS, anything on JVM
10. provectus.com
Funktion and Kubernetes
• Stores everything in ConfigMap: Functions(code and settings), Flows, Connectors
• Uses Kubernetes abstractions: Deployments for Runtimes, Services as Router
• Mounts ConfigMap with code directly into Containers
• Constantly running Pod with Operator that orchestrates everything
• Relies on metadata in services, deployments
12. provectus.com
Kubeless
• Made by bitnami
• Uses Kafka(comes out of the box) for event sourcing
• Comes with Prometheus
• Out of the box runtimes: NodeJS, Python
• CLI compliant with AWS Lambda CLI
• 2 types of triggers: http and pubSub
13. provectus.com
Kubeless and Kubernetes
• Creates new object Kind “Function”
• Uses ConfigMaps for storing settings/code
• Uses Services as Router for Http trigger
• Constantly running pod Kubeless Controller watches for functions create/update
14. provectus.com
Kubeless: Hello world
$kubectl create ns kubeless
$kubectl -n kubeless create -f “kubeless-0.0.18.yaml"
$#wait for kafka to start
$kubectl get pods -n kubeless
$kubeless function deploy get-python --runtime python27 --handler test.foobar
$ --from-file test.py --trigger-http
$curl --data '{"Another": "Echo"}' $(minikube service get-python --url)
--header "Content-Type:application/json"
{"Another": "Echo"}
15. provectus.com
Fission
• early stage(Alpha)
• Subscribes to Kubernetes watches for events in cluster
• Out of the box runtimes: Python, NodeJS, Go, C#, PHP
• Pre-warms Function containers(keeps a running pool of containers for each runtime)
• Can use NATS for queues