Cloud Native
Empowers organizations to build and run scalable applications in modern, dynamic environments such as public, private, and hybrid clouds. Containers, microservices, immutable infrastructure, declarative APIs and service meshes exemplify this approach.
These techniques enable loosely coupled systems that are resilient, manageable, and observable. Combined with robust automation, they allow engineers to make high-impact changes frequently and predictably with minimal toil. Source: CNCF definition.
Benefits of cloud native computing include faster release pace, ease of management, reduced cost through containerization and cloud standards, ability to build more reliable systems, avoidance of vendor lock-in and improved customer application experiences.
Container
A standard unit of software that packages up code and all its dependencies so the application runs quickly and reliably from one computing environment to another. Source: Docker.
In Kubernetes, each container that you run is repeatable; the standardization from having dependencies included means that you get the same behavior wherever you run it. Containers decouple applications from underlying host infrastructure. This makes deployment easier in different cloud or OS environments. Source: CNCF concepts.
Kubernetes
A portable, extensible, open-source platform for managing containerized workloads and services, that facilitates both declarative configuration and automation. It has a large, rapidly growing ecosystem. Kubernetes services, support, and tools are widely available. Kubernetes provides you with a framework to run distributed systems resiliently. It takes care of scaling and failover for your application, provides deployment patterns, and more. Source: CNCF What is Kubernetes.
Infrastructure as code (IAC)
The ability to provision and manage infrastructure using a configuration language. IAC brings the repeatability, transparency, and testing of modern software development to the management of infrastructure such as networks, load balancers, virtual machines, Kubernetes clusters, and monitoring. A primary goal of IAC is to reduce error and configuration drift, while allowing engineers to spend time on higher value tasks. IAC defines what the end state of your infrastructure looks like, instead of defining a series of steps to be executed - IAC tools like Terraform can be run multiple times against your infrastructure, producing the same desired result.
Using a cloud user-interface to create a managed Kubernetes cluster is a relatively straightforward process, however using infrastructure as code helps standardize cluster configuration and manage add-ons like network policy, maintenance windows, and Identity and Access Management (IAM) for cluster nodes and workloads.