7. Monolith
● The way we’ve been
doing things
● Single codebase
● Long deployment process
○ Testing dependencies
○ Rolling restarts of servers
○ Traffic rerouting
9. Proxy Model
● Load Balances requests
to services
● Analogous to connectivity
for a horizontally scaled
monolith
● Services are left to
communicate with each
other
● Acts as an entry point for
monolith migration
● Lays the foundation for
building a service mesh
10. Router Mesh
● Standalone NGINX Plus
instance which acts as a
traffic manager
● Provides service
discovery via DNS SRV
records
● Load balances to
instances of services
● NGINX Plus provides
active health checks
allowing for circuit
breaker functionality
11. Fabric Model
● NGINX Plus exists as a
sidecar within the same
container as the service
● NGINX Plus and the app
communicate only on
localhost
● Instances of NGINX Plus
communicate directly
with each other
● Incorporates all the
features of the Router
Mesh and adds
persistent SSL
connections
12. Persistent SSL Connections
● An SSL handshake requires as
few as seven steps or as many
as 10
● NGINX Plus uses a keepalive
mechanism to persist
connections between instances
● The number of handshakes is
greatly reduced, thereby
decreasing overall latency
while maintaining encrypted
transmission
1 SYN >
2 < SYN/ACK
3 ACK >
4 ClientHello >
5 < ServerHello
< Certificate
< ServerKeyExchange
< ServerHelloDone
6
ClientKeyExchange >
ChangeCipherSpec >ClientFinished >
7 < ChangeCipherSpec
< ServerFinished
15. 15
Kubernetes is system for
automating deployment, scaling,
and management of containerized
applications
16. Kubernetes makes ops easy…
• Run anywhere
• Rolling updates
• Fault Tolerant
• Horizontally scalable
• Simple Load
Balancing
• YAML… and more!
16
17. 17
• Limited to layer 4 only load balancing
• Round robin only
• No security features
• No persistence, SNI, or other advanced
features
• Production Applications need advanced
load balancing consider using an Ingress
controller so you can bring your own!
Built-in simple load balancing
25. NGINX Plus
25
NGINX Plus
• Load balancing w/ SSL/TLS
termination
• WebSocket and HTTP/2 support
• Layer 7 Routing / Modification
• Session persistence
• JWT authentication
• 24/7 support, no additional cost
• Advanced Monitoring… and more!
26. 26
NGINX Plus Ingress Controller
• Runs in a container
• Well designed, fast and efficient golang script under the hood
• Community driven codebase
• Available for NGINX and NGINX Plus
https://github.com/nginxinc/kubernetes-ingress
29. 29
Data store + template
• Register services with a data
store (aka etcd or consul)
• Template the NGINX
configuration and manage
NGINX service via CLI (confd
or consul template)
datastore
Services (containers)
NGINX Open Source
30. 30
We love APIs!
• Services availability is
managed by kubernetes and
available via API
• Orchestration script can be in
any language
• NGINX Plus upstreams
managed dynamically without
configuration reload
Services (containers)
NGINX Plus
API
Kubernetes API
Orchestration (script)
31. 31
Service Discovery ;D
• Built in DNS resolver
• Control over TTL
• Easily Integrates with existing
DNS based service discovery
tools
32. 32
My demo today…
• URL based routing
• Hostname based routing
• SSL termination at LB
• Support for scaling of replicas at LB via dynamic reconfiguration
• Available on github within the Ingress Controller repository
../examples/complete-example/