Kubernetes
There are so many pieces and aspects to this product it is hard to narrow the scope of this paper.
Distribution
These are exactly like Linux distrobutions, where they all share the same “kernel” of options, while achieving them in different ways.
- rke2
- k3s
- k0s
- minikube
Tools
Common tools handle a lot of differnet aspects, but these are the most common (That I’ve seen)
- flux
- This is for syncronizing your envrionment to a configuration repository. One Repo can hold many enviroments and act as a package manager. Because of this, a “bootstrapping” step is required.
- argocd
- This is a tool for deploying your application to the cluster. It works in a lot of a the same ways as Flux, but seems more focused on the application side rather than the configuration of the cluster AND applications.
- helm
- This provides a templating scheme to create “packages” that can be deployed with either of the options above, or even itself. Helm offers the ability to deploy from its binary and manage the application from there.
- kubectl
- This is the tool to control your cluster in various ways directly. Turn off pods, grab logs, very similar to running “docker” or “podman”
- istioctl
Important Files
- /home/user/.config/kubeconfig
- This holds all of the connection data to one or more of your clusters in an environment. Rancher can help create this file, and most distros have a file stored somewhere for this. Most of the above tools refernce this file in order to work with your cluster.
- Kustomizations
- These files are either created by the cluster or by hand, then they are meant to directly apply to the cluster. My way of thinking of it is a direct binary. Nothing is managing this file except yourself, has complete access to the system, and a sure fire way to drift your cluster from a desired state to a rogue state.