In this webinar we will discuss a crawl, walk, run approach to continuous delivery (CD) for applications, point by point:
Where to start, how to advance, and how to reach the level of maximum automation.
How to orchestrate CI/CD processes along with routing and business continuity.
When the automation level is sufficient.
GitOps principles and their benefits.
What tools should be used to automate CI, CD, GitOps, Container Registry, Secrets management, etc
3. BARRY WILLIAMS
Kubernetes Deployment Maturity
● Background in Software Engineering with DevOps
focus
● 7+ years working with cloud environments
● 3+ years experience with Kubernetes
● Responsible for automated deployment of the ELK
stack on Kubernetes
● Created Mel—an online retail platform startup
● Father of four girls
● Enjoys electronic music, smoked BBQ, and homemade
rockets
● @BarrWill1
4. ● 20+ years in the IT business across Education, GIS,
and managing IT teams
● From front-end web development to cloud
environments
● Specializes in Containers and Modern Application
Development
● 8+ years working with cloud
● Enjoys camping, kayaking, and long walks on the
beach ;)
● Makes killer Korean BBQ
● @boringgeek
Kubernetes Deployment Maturity
CURTIS RISSI
5. Kubernetes
Benefits:
An open-source container orchestrator
Run workloads at scale
Common global runtime
Huge industry momentum and support
Declarative-based operations
Extensible
Complications:
Container management
Deployments configuration can be complex
Stateful applications require additional architectural
solutions
Platform management
Striking the right balance between containers and
managed services
Kubernetes Deployment Maturity
6. Kubernetes
Platform Maturity
Webinar Series
● Continuous Delivery for Applications
Deployments configuration versioning, services
dependencies, deployment strategies, and automated
rollbacks
● Continuous Integration for Applications and
K8s itself
Code and image versioning, building, updating and securing
images, managing secrets, as well as managing a container
registry (CI webinar)
● K8s Platform management
Configuration versioning, scaling, updates/patches, and
rollbacks (Platform webinar)
Kubernetes Deployment Maturity
7. Goals for CI/CD
of Modern
Applications
● Accelerate the delivery of new, high-quality services
● Simplify environment management
● Reduce the impact of code changes
● Automate operations
● Gain insight across resources and applications
● Protect customers and the business
Kubernetes Deployment Maturity
8. Teams that
practice CI/CD
ship more code
faster and with
more confidence
Lower change
failure rate
5x
More frequent
deployments
46x
Faster from
commit to deploy
440x
More time spent on new
features and code
44%
Source: Puppet 2017 State of DevOps Report
Kubernetes Deployment Maturity
17. When the impact
of a change is
small, release
velocity can
increase
Structure apps as collections of
microservices
Monolithic application
Does everything
A shared release pipeline
Rigid scaling
A high impact of a change
Hard to adopt new
technologies
Microservices
Does one thing
Independent deployments
Independent scaling
Small impact of a change
A choice of a technology
Kubernetes Deployment Maturity
19. 1. Build an application and create a container image
2. Push the container image to a container registry
3. Deploy the container to your Kubernetes cluster
4. Perform testing (functional, performance, etc.)
5. Apply a rollback if required
Kubernetes Deployment Maturity
Manual
Deployments:
Process
20. Manual
Deployments:
Benefits
● A low barrier to entry
● Doesn’t require complex infrastructure
● Faster for one-off processes
● A support team doesn’t need to learn additional
products
● Can serve as an input for automation
● An educational benefit
Kubernetes Deployment Maturity
21. Manual
Deployments:
Considerations
● Manual updates and rollbacks increase a risk of
configuration mistakes
● Harder management and requires human intervention
● Values can be hardcoded into the Kubernetes configs
and may require significant effort to update
● A potential lack of standardization
● Longer rollback and break-fixes
● Increased complexity in a case of microservices
architecture
Kubernetes Deployment Maturity
22. Manual
Deployments:
Common
Scenarios
● For a Proof of Concept work
● In environments with infrequent updates
● Where there aren’t strict audit and compliance
requirements
● When your application architecture is simple with few
dependencies
May make sense:
Kubernetes Deployment Maturity
25. Intermediate:
Process
1. Create CI pipelines to build, test, and scan
deployment artifacts
2. Create CD pipelines to deploy the app
3. Perform testing (functional, performance, etc.)
4. Rollback if required
Prerequisite: Choose and deploy CI/CD
product(s)
Kubernetes Deployment Maturity
26. Intermediate:
Benefits
● Manual deployments are replaced by automated
pipelines.
● Test automation and metrics could be embedded in
the deployment cycle.
● Easier cluster creation.
● Faster rollback and break-fix.
● Could be integrated with project-tracking products.
● Generally runnable by a Tier 1 support team.
Kubernetes Deployment Maturity
27. Intermediate:
Considerations
● A skilled team is required to integrate CD with existing
systems
● A rollback is still partially manual without proper
testing and monitoring
● Additional resources required to maintain the CD
solution
● Secrets management
Kubernetes Deployment Maturity
28. Intermediate:
Common Scenarios
● In environments with frequent deployments
● In an org with an Agile mindset/directive
● If audit and compliance requirements exist
● When deploying complex applications
● Multiple environments (DEV, STG, PRD)
May make sense:
Kubernetes Deployment Maturity
29. Intermediate:
Summary
● In environments with frequent deployments
● In an org with an Agile mindset/directive
● If audit and compliance requirements exist
● When deploying complex applications
● Multiple environments - DEV, STG, PRD
May make sense:
● A skilled team is required to integrate CD with existing
systems
● A rollback is still partially manual without proper testing and
monitoring
● Additional resources required to maintain the CD solution
● Secrets management
Considerations with this approach:
Kubernetes Deployment Maturity
33. Advanced:
Process
1. Create CI pipelines to build, test, and scan
deployment artifacts
2. Create CD pipelines to deploy the app
3. Design a Canary strategy
4. Create an automated testing solution
5. Perform any other (manual) testing
6. Update traffic routing
7. Rollback if required
Prerequisite: Choose and deploy CI/CD
product(s)
Kubernetes Deployment Maturity
34. Advanced:
Benefits
● Deploy anytime with predictable or no downtime
● Controlled and faster rollbacks
● Improved customer experience
Kubernetes Deployment Maturity
36. Advanced:
Common
Scenarios
● Tight SLAs: intolerance to downtime
● Very large deployments
● Limited development personnel to complete
deployments
May make sense:
Kubernetes Deployment Maturity
37. Advanced:
Summary
● Tight SLAs: intolerance to downtime
● Very large deployments
● Limited development personnel to complete
deployments
May make sense:
● Canary/cutover design
● What to do with all your free time
Considerations with this approach:
Kubernetes Deployment Maturity
41. Expert: A service to
service routing and
control
Kubernetes Deployment Maturity
42. Expert: Process
1. Put code and Helm charts in Git
2. Install Service Mesh
3. Decide traffic patterns/rules
4. Update deployment configurations/pipelines
accordingly
Follow GitOps principles: Declarative
configs and Git-driven automation
Kubernetes Deployment Maturity
43. Sidebar: GitOps
● Declarative
● Versioned artifacts
● An approval mechanism built-in
● Tooling to produce the change
● Great for reproducibility, auditing, and on and on
Kubernetes Deployment Maturity
44. Expert: Benefits
● Declarative, versioned artifacts
● Granular control over data flow
○ Weighted traffic distribution
○ Request limits
○ Circuit breakers
● Enhanced security
○ Mutual TLS
○ Access control
● Enhanced observability
○ Distributing tracing
○ Service metrics
● Fault injection testing
Kubernetes Deployment Maturity
46. Expert:
Use cases
● When deploying complex microservice applications
with dependencies
● Advanced security requirements
● Maximum efficiency in terms of cost and time
Build this out more. Advanced
architectures, multi-cluster/cloud/...
Kubernetes Deployment Maturity
47. Expert:
Summary
● When deploying complex microservice applications
with dependencies
● Advanced security requirements
● Maximum efficiency in terms of cost and time
May make sense:
● Service Mesh adds complexity to an overall
architecture
● Performance implications
Considerations with this approach:
Kubernetes Deployment Maturity
49. Beginner
Deployments:
Summary
● For a Proof of Concept work
● In environments with infrequent updates
● Where there aren’t strict audit and compliance
requirements
● When your application architecture is simple with few
dependencies
May make sense for:
● Manual updates and rollbacks increase risk of
configuration mistakes
● Harder management and requires human intervention
● Potential lack of standardization
● Longer rollback and break-fixes
● Increased complexity in a case of microservices
architecture
Considerations with this approach:
Kubernetes Deployment Maturity
50. Intermediate
automation:
Summary
● In environments with frequent deployments
● In an org with an Agile mindset/directive
● If audit and compliance requirements exist
● When deploying complex applications
● Multiple environments: DEV, STG, and PRD
May make sense:
● A skilled team is required to integrate CD with existing
systems
● A rollback is still partially manual without proper
testing and monitoring
● Additional resources required to maintain the CD
solution
● Secrets management
Considerations with this approach:
Kubernetes Deployment Maturity
51. Advanced
Automation:
Summary
● Tight SLAs: intolerance to downtime
● Very large deployments
● Limited development personnel to complete
deployments
May make sense:
● Adapting to Git-driven workflows
● Canary/cutover design
● What to do with all your free time
Considerations with this approach:
Kubernetes Deployment Maturity
52. Expert Automation:
Summary
● When deploying complex microservice applications
● Advanced security requirements
● Maximum efficiency in terms of cost and time
May make sense:
● Service Mesh adds complexity to overall architecture
● Performance implications
Considerations with this approach:
Kubernetes Deployment Maturity