Kubernetes runs pods that contain 1 to n docker containers. So if you have your apps in the form of docker images you are ready to go.
Interacting with kubernetes feels very different and in a lot of ways it's almost an operating system for a super computer. You sort of forget how many computers and vms or whatever are out there and kubernetes handles a lot of the implementation details for you. Installing a lot of apps to the cloud is as simple as typing 'helm install jenkins' and waiting 5 minutes.
It's just a radically new way of dealing with 'the cloud'. And the thing that makes it especially threatening to aws is that it doesn't matter where it runs. Developing an app for kubernetes on aws or google cloud or azure or anything else is almost an identical experience. People are going to become very price sensitive because that's the only thing that distinguishes one kubernetes host from another (aside from the ease of installing a kubernetes cluster -- something which aws is fairly far behind on)
In general, the right question to ask yourself when designing Pods is, “Will these containers work correctly if they land on different machines?” If the answer is “no,” a Pod is the correct grouping for the containers. If the answer is “yes,” multiple Pods is probably the correct solution.
Ingress controller watches for
Ingress resources in your cluster.
Kubernetes (or whatever other container scheduler) might feel like overkill, but if all they do is force you to adopt a container-centric / 12-factor way of building your applications it was worth trying them. And once you've adopted that workflow it's a no-brainer to go from a single node to a cluster which will dynamically allocate the workloads it runs.
Running a small container cluster at work has even changed how I setup single-host projects in my spare time: I will build everything into a container, bind-mount whatever it might need, create a simple systemd unit that just runs / rms the docker container on start and stop. Bliss.
Helm - Kubernetes package manager.
kaniko - Build Container Images In Kubernetes.
Draft - Streamlined Kubernetes Development.
Nix Kubernetes - Kubernetes deployment manager written in Nix.
Knative Serving - Kubernetes-based, scale-to-zero, request-driven compute.
Portainer - Lighter than Rancher (for Docker).
node-problem-detector - Aims to make various node problems visible to the upstream layers in cluster management stack.
kubectx - Fast way to switch between clusters and namespaces in kubectl.
Kubeval - Validate your Kubernetes configuration files, supports multiple Kubernetes versions.
Kubespy - Tools for observing Kubernetes resources in real time, powered by Pulumi.
KubeContext - Menu Bar App for Managing Kubernetes Contexts on Mac.
Kubeapps - Web-based UI for deploying and managing applications in Kubernetes clusters.
kubefwd - Bulk port forwarding Kubernetes services for local development.
Kubespray - Deploy a Production Ready Kubernetes Cluster.
Argo - Container-native workflows for Kubernetes.
Kazan - Kubernetes API client for Elixir.
Tilt - Local Kubernetes development with no stress.
Maestro - Provides a declarative approach to building production-grade Kubernetes Operators covering the entire application lifecycle.
kail - Kubernetes log viewer.
Virtual Kubelet - Open source Kubernetes kubelet implementation.
Compose on Kubernetes - Deploy applications described in Compose onto Kubernetes clusters.
kind - Kubernetes IN Docker - local clusters for testing Kubernetes.
Kubernetes Failure Stories - Compilation of public failure/horror stories related to Kubernetes.
Garden - Development engine for Kubernetes, containers and serverless functions.
Kubernetes Authentication Example - Code is provided verbatim as an example of how to connect to an OIDC provider and authenticate users before configuring their kubeconfig.
PowerfulSeal - Adds chaos to your Kubernetes clusters, so that you can detect problems in your systems as early as possible.
Goldpinger - Debugging tool for Kubernetes which tests and displays connectivity between nodes in the cluster.
k3s - Lightweight Kubernetes. Easy to install, half the memory, all in a binary less than 40mb.
Kubebuilder - SDK for building Kubernetes APIs using CRDs.
k9s - Provides a curses based terminal UI to interact with your Kubernetes clusters.
Knative build - Kubernetes-native Build resource.
Cerebral - Kubernetes cluster autoscaler with pluggable metrics backends and scaling engines.
Skaffold - Easy and Repeatable Kubernetes Development.
Talos - Modern Linux distribution for Kubernetes.