The SafetyCulture journey to Kubernetes — Part 2

Overview

This article is the second part of SafetyCulture's journey to implementing Kubernetes on Amazon EKS. It delves into their experiences with EKS rollout, service deployment patterns using Helm, and their near-term roadmap including canary deployments and service mesh considerations.

What You'll Learn

1

How to deploy Kubernetes clusters using Terraform

2

Why Helm is beneficial for managing Kubernetes deployments

3

When to consider implementing a service mesh in your architecture

Prerequisites & Requirements

  • Understanding of Kubernetes and cloud infrastructure concepts
  • Familiarity with Terraform and Helm

Key Questions Answered

What deployment patterns did SafetyCulture use for Kubernetes on EKS?
SafetyCulture utilized Terraform for defining their Kubernetes-related infrastructure, including VPCs, subnets, and EKS clusters. They also adopted Helm for service deployments to streamline the process and reduce the burden on product teams.
How does SafetyCulture manage service deployments with Helm?
SafetyCulture manages service deployments using Helm charts, which provide templating and standardization for various service types. They defined three central patterns for service deployments: http, grpc, and noservice, accommodating different service needs.
What is the current state of Kubernetes platform versions on EKS?
EKS currently supports Kubernetes version 1.10.11 by default and allows self-upgrades to version 1.11.5. The platform versioning facilitates minor version upgrades within the major version, enhancing the upgrade process.
What are the considerations for using open source Helm charts?
SafetyCulture decided to use only stable open source Helm charts to ensure stability in their clusters. They actively contribute to the charts they use, enhancing customization and reliability.

Technologies & Tools

Some links below are affiliate links. We may earn a commission if you make a purchase.

Infrastructure Management
Terraform
Used for defining Kubernetes-related infrastructure such as VPCs and EKS clusters.
Deployment
Helm
Utilized for managing service deployments to Kubernetes.
Cloud Service
Eks
Amazon's managed Kubernetes service used for deploying and managing Kubernetes clusters.
Deployment
Helmsman
A tool for managing Helm charts as code.

Key Actionable Insights

1
Utilize Terraform for infrastructure management to streamline Kubernetes deployments.
By leveraging Terraform, teams can define and manage their cloud infrastructure efficiently, reducing setup time and ensuring consistency across environments.
2
Adopt Helm for service deployments to simplify management and reduce duplication.
Helm allows teams to standardize deployments across microservices, minimizing the need for repetitive Terraform code and improving security.
3
Evaluate the need for a service mesh as your microservices architecture grows.
While SafetyCulture has not yet implemented a service mesh, they recognize that as their number of microservices increases, the benefits of a service mesh may become significant.

Common Pitfalls

1
Overcomplicating deployment pipelines by introducing unnecessary tools.
SafetyCulture evaluated several tools for Helm chart deployments but opted for Helmsman due to its simplicity and compatibility with existing setups, avoiding the complexity of additional installations.

Related Concepts

Kubernetes Deployment Patterns
Infrastructure As Code With Terraform
Helm For Kubernetes Package Management
Service Mesh Considerations In Microservices