Kubernetes, GitOps, and Modern Software Deployment
Dec 22, 2022 by Adam Frank
What is Kubernetes?
Modern software delivery to the cloud enables enterprises to make their applications highly available and manage their performance. Many enterprises deploy their mission critical applications on Kubernetes to do this safely and at scale.
Kubernetes (K8s) is a platform to automate deployment, scale and operate application containers across server groups. Because of its features and popularity, Kubernetes has robust support from all major cloud providers, including AWS (EC2 & EKS), Azure (AKS), Google Cloud (GKE) and Oracle.
Armory has embraced Kubernetes as one of our preferred deployment targets. This allows you to choose which cloud is best suited to run and manage your applications in production. It also allows you to leverage the abundantly available K8s community support.
Armory’s Kubernetes Agent is a lightweight service that:
- Runs in a K8s cluster.
- Caches resource configurations.
- Binds account identities with the resources these roles (or users) are authorized to manage.
The result is high-performance, large-scale Kubernetes deployments. Replicating these configs (e.g., helm charts) and security & privacy controls in each K8s cluster allows you to scale up to thousands of clusters with minimal latency.
Figure 1. Kubernetes Cluster
What is GitOps?
GitOps is another imperative of modern software delivery. Kelsey Hightower describes GitOps as enabling “versioned CI/CD on top of declarative infrastructure.”
GitOps uses Git as a single system of record for infrastructure and applications. With Git supporting your software delivery pipelines, your developers use familiar tools to make pull requests to automate both application deployments and operations tasks.
Armory Enterprise manages the automated delivery of software from GitOps-enabled development to a K8s cluster hosted by Amazon, Microsoft, or Google. Consider the GitOps ecosystem shown on the left side of the figure. Using Armory Enterprise to deploy their software to K8s, developers are empowered to specify which applications run on which infrastructure to optimize the configuration, reliability, performance, monitoring and security of each application.
With GitOps and declarative cloud-native infrastructure, development teams can manage their applications and infrastructure “as code,” applying their SDLC practices to both.
CI tools and GitOps provide the source of truth for new application code to the CI/CD pipeline. Armory Terraformer and GitOps provide the source of truth for the infrastructure as code (IaC).
The continuous deployment pipeline in Figure 2 begins with the Amory platform checking that the application and infrastructure software are in sync, secure (e.g., using scanned and tested container images, binaries, libraries, source code, etc.), paired (e.g., when container images are baked) and validated together throughout the pipeline.
Pipelines-as-Code for Modern Software Deployment
Armory Enterprise standardizes software delivery workflows across teams by leveraging Pipelines as Code. Pipelines as Code allow you to define, test, refactor and scale your software delivery pipelines as an extension of the GitOps ecosystem.
Armory’s customers define their pipelines in YAML, JSON or HashiCorp Configuration Language (HCL), while Git ensures that they are version controlled and in sync with their applications and infrastructure. Since these languages support templates and modules, your developers can share best practices, reuse code and maintain pipeline consistency for your organization.
The Armory platform also supports building a new pipeline by composing existing pipelines or including stages from other pipelines. These features make it faster and easier for developers to get a new application deployed and running. Learn more about enabling pipelines-as-code in Armory.
Learn more about Armory’s modern continuous deployment solutions.